• 工厂方法模式


    工厂方法的通用源码

    抽象产品类

    public abstract class Product{
      public void method(){
    
      }
      public abstract void method2();
    }

    具体产品类

    public class ConcreteProduct1 extends Product{
      public void method2(){
    
      }
    }
    
    public class ConcreteProduct2 extends Product{
      public void method2(){
    
      }
    }

    抽象工厂类

    public abstract class Creator{
      public abstract <T extends Product> T createProduct(Class<T> c);
    }

    具体工厂类

    public class ConcreteCreator extends Creator{
      public <T extends Product> T createProduct(Class<T> c){
        Product product=null;
        try{
          product=(Product)Class.forName(c.getName()).newInstance();
        }catch(Exception e){
          ....
        }
        return (T)product;
      }
    }
    

    简单工厂模式

    简单工厂模式去掉了抽象工厂类, 并且createProduct()方法添加了static. 该模式调用过程更为简单, 方便理解. 但是扩展较为困难, 不符合开闭原则.

    多工厂模式

    利用工厂模式生成单例

    class Singleton{
        private Singleton(){}
        public void doSomething(){}
    }
    public class FactorySingle {
        private static Singleton sSingleton;
    
        static {
            try{
                Class cl=Class.forName(Singleton.class.getName());
                Constructor constructor=cl.getDeclaredConstructor();
                constructor.setAccessible(true);
                sSingleton=(Singleton)constructor.newInstance();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    
        public static Singleton getSingleton(){
            return sSingleton;
        }
    }

    抽象工厂模式

    为创建一组相关或者是相互依赖的对象提供一个接口, 而不需要制定它们的具体类.

  • 相关阅读:
    Swagger2 添加HTTP head参数
    获取枚举类型描述
    JS设置cookie、读取cookie、删除cookie
    ES6中Promise的入门(结合例子)
    阮一峰的ES6---Promise对象
    model_util.py
    IfcSpatialElementType
    labelme coco
    python opencv KeyPoint
    IfcSpatialZoneType
  • 原文地址:https://www.cnblogs.com/fei-hsueh/p/6106300.html
Copyright © 2020-2023  润新知