• 面试积累(简单的工厂模式)


    工厂模式我们常见的设计模式之一,看看下面的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。

  • 相关阅读:
    Python 必备神器
    python 常用库
    Sublime Text3 配置 Python2 Python3
    Python JSON
    Sublime Text3 3143 注册码
    EFCode First 导航属性
    EF Code First:实体映射,数据迁移,重构(1)
    Entity Framework 复杂类型
    EF 7 Code First
    EF Code First 导航属性 与外键
  • 原文地址:https://www.cnblogs.com/Leonar-do/p/5219887.html
Copyright © 2020-2023  润新知