253 字
1 分钟
工厂方法模式
工厂方法的通用源码
抽象产品类
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; } }
抽象工厂模式
为创建一组相关或者是相互依赖的对象提供一个接口, 而不需要制定它们的具体类.