zoukankan      html  css  js  c++  java
  • Factory Method

    简单工厂的缺点对于“开-闭”原则的支持不够,因为如果有新的产品加入系统中,就要修改工厂类,将必要的逻辑加入工厂类中。

    工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态,工厂方法模式保持了简单工厂模式的优点,也克服了它的缺点。

    在工厂方法模式中,核心的工厂类不再是负责所有产品的创建,而是将具体的工作交予子类。核心类成为一个抽象工厂的角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品来应当被实例化这种细节。

    这种进一步抽象化的结果,使得工厂方法模式可以用来允许系统在不修改具体工厂角色的情况下引进新的产品。

    • 抽象工厂(Creator):工厂方法模式的核心。
    • 具体工厂(Contrete Creator):实现了抽象工厂接口,具体工厂含有应用密切的逻辑,并创建具体产品对象。
    • 抽象产品(Product):工厂方法模式所创建的对象的超类。
    • 具体产品(Contrete Product):实现了抽象产品的接口,是工厂模式所创建的具体产品。
    1 public interface Creator
    2 {
    3     /*
    4      * 工厂方法
    5      * */
    6     public abstract Product factory();
    7 }
    1 /*
    2  * 标识接口
    3  * */
    4 public interface Product
    5 {
    6     
    7 }
    1 public class ContreteProduct1 implements Product
    2 {
    3     public ContreteProduct1(){
    4         //do someting
    5     }
    6 }
    1 public class ContreteProduct2 implements Product
    2 {
    3     public ContreteProduct2(){
    4         //do someting
    5     }
    6 }
    1 public class ContreteCreator1 implements Creator
    2 {
    3     @Override
    4     public Product factory()
    5     {
    6         return new ContreteProduct1();
    7     }
    8 }
    1 public class ContreteCreator2 implements Creator
    2 {
    3     @Override
    4     public Product factory()
    5     {
    6         return new ContreteProduct2();
    7     }
    8 }
     1     public static void main(String[] args)
     2     {
     3         Creator creator1, creator2;
     4         Product product1, product2;
     5         
     6         creator1 = new ContreteCreator1();
     7         product1 = creator1.factory();
     8         
     9         creator2 = new ContreteCreator2();
    10         product2 = creator2.factory();
    11     }
  • 相关阅读:
    python_16(bootstrap)
    python_15(jquery)
    python_14(js)
    .net 定义泛型方法解析XML数据赋值给相应对象
    SQL Server 数字字符串位数不够补0
    SQL Server 跨服务器查询
    JQ1.5 为动态追加的元素添加事件
    radio group 的change 事件
    记录兼职工作中遇到的问题-IIS 服务器站点无法启动
    记录第一份工作的最后一次需求-百分比环形进度条
  • 原文地址:https://www.cnblogs.com/xuekyo/p/2819221.html
Copyright © 2011-2022 走看看