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

抽象工厂模式#

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

工厂方法模式
https://blog.ivyxjc.com/posts/pattern-factory/
作者
Clever Castle
发布于
2016-10-25
许可协议
CC BY-NC-SA 4.0