美文网首页
Design Pattern -- 工厂模式

Design Pattern -- 工厂模式

作者: androidjp | 来源:发表于2018-04-02 20:13 被阅读14次

    引言:工厂用于帮你完成对象的new操作,作用一般是:帮你创建对象。一般配合反射来使用。

    一、场景


    A卖果汁和雪糕,B也卖果汁和雪糕,但是A有自己的店铺和制作机器,也可以引进各种产品的制作图谱,让机器去生产就好;而B是纯手工自己弄,那么,很明显,A一天能卖出去的东西肯定更多,B效率这么低,就算我们愿意排队等,B一天也卖不了多少。于是B想要引进A的经营方式,引进机器。

    二、设计与代码

    1. 首先,B定义好自己想要从事的活。【要生产什么】
      public abstract class Product {
       public abstract void msg();
      }
      
    2. 然后,得买一个什么都能学会的机子,给他什么图谱,他就能生产什么。
      好,找到卖机器的店,看到机器的模型。
      public abstract class Factory {
       public abstract <T extends Product> T createProduct(Class<T> clazz);
      }
      
      好,最终找到适合自己的生产机器。【终极版本,直接反射来学习各种图谱】
      public class ConcreteFactory extends Factory{
       @Override
       public <T extends Product> T createProduct(Class<T> clazz) {
           Product product = null;
           try {
               product = (Product) Class.forName(clazz.getName()).newInstance();
           } catch (InstantiationException | IllegalAccessException
                   | ClassNotFoundException e) {
               e.printStackTrace();
           }
           return (T) product;
       }
      }
      
    3. 好了,万事具备,现在,B想生产果汁(ProductA) 和 雪糕(ProductB),只需要这样:
    public class IceCream extends Product{
        @Override
        public void msg() {
            System.out.println("我是雪糕");
        }
    }
    
    public class Juice extends Product {
        @Override
        public void msg() {
            System.out.println("我是果汁");
        }
    }
    
    1. 结果


    相关文章

      网友评论

          本文标题:Design Pattern -- 工厂模式

          本文链接:https://www.haomeiwen.com/subject/yiwxhftx.html