工厂方法模式

来源:互联网 发布:慢跑鞋哪个牌子好 知乎 编辑:程序博客网 时间:2024/06/06 03:27

工厂方法的通用源码

抽象产品类

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;    }}

抽象工厂模式

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

0 0