zoukankan      html  css  js  c++  java
  • 面试积累(简单的工厂模式)

    工厂模式我们常见的设计模式之一,看看下面的demo就知道一二了。

    比如说“玩手机”这是一个抽象的事件,其中的手机和玩都是抽象的:

    public abstract class Phone {
        public abstract void play();
    }

    但是我们要知道怎么玩,玩什么手机,这才能变成一个具体的事件:

    //玩三星手机
    public
    class SanXing extends Phone{ @Override public void play() { System.out.println("躺着玩三星手机"); } }
    //玩苹果手机
    public
    class ApplePhone extends Phone{ @Override public void play() { System.out.println("走着玩苹果手机"); } }
    //玩诺基亚手机
    public
    class NuoJiYa extends Phone{ @Override public void play() { System.out.println("站着玩诺基亚手机"); } }

    但是如果有很多人都要玩手机,我们就需要有一个手机工厂来解决这个问题:

    public class PhoneFactory {
        public static Phone getPhone(String thisPhone){
            Phone phone;
            if(thisPhone.equals("三星")){
                phone=new SanXing();
            }else if(thisPhone.equals("苹果")){
                phone=new ApplePhone();
            }else{
                phone=new NuoJiYa();
            }
            return phone;
        }
    }

    下面我们做一个测试类来测试一下效果:

    import java.util.Scanner;
    public class Test {
        public static void main(String[] args){
            Scanner input=new Scanner(System.in);
            System.out.println("你想玩什么手机?");
            String thisPhone=input.next();
            Phone pf=PhoneFactory.getPhone(thisPhone);
            pf.play();
        }
    }

    以上就是一个简单的工厂模式的demo。

  • 相关阅读:
    css样式的六种选择器
    css 颜色表示法
    css 文本设置
    “http”和“https”的区别是什么?优缺点是什么?
    Httpclient
    接口认证:Bearer Token(Token 令牌)
    哪个参数用来区分请求来自客户(手机)端还是服务器(PC)端?
    常用的HTTP响应头
    Http 请求头包含哪些信息?
    单例集合的体系
  • 原文地址:https://www.cnblogs.com/Leonar-do/p/5219887.html
Copyright © 2011-2022 走看看