设计模式之工厂方法模式
????? 简单工厂模式在一定程度上满足了"开闭原则"(对扩展开放,对修改关闭)。即某一对象请求实例化时只需要向工厂方法
?
请求,然后由工厂方法负责创建某一具体对象并返回它,而不需要修改现有代码。但是工厂方法里可以创建的对象是有限
?
的,一旦有新的产品需要增加时就需要修改现有工厂类代码,将必要的逻辑加到工厂类中。
??????
?????? 工厂方法模式克服了这个缺点。工厂方法模式也是类的创建模式,又叫多态性工厂模式,它是定义一个创建产品对象
?
的工厂接口,将实际创建工作推迟到子类中。
?
??????? 在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做。
?
源码实例
?
/** * 产品接口 * @author Administrator * */public interface Product {}/** * 工厂方法 * 接口 * @author Administrator * */public interface Creator {public Product factory();}
?
/** * 具体实现类 * @author Administrator * */public class ConcretorCreator1 implements Creator {public Product factory() {return new ConcreteProduct1();}}/** * 实现了接口product的类 * @author Administrator * */public class ConcreteProduct1 implements Product {public ConcreteProduct1(){}}
?
?
/** * 具体实现类 * @author Administrator * */public class ConcretorCreator2 implements Creator {public Product factory() {return new ConcretorProduct2();}}/** * 实现了接口product的类 * @author Administrator * */public class ConcretorProduct2 implements Product { public ConcretorProduct2(){ }}
?
?
public class ClientInvoke {private static Product product1,producet2;private static Creator creator1,creator2;public static void main(String args[]){creator1=new ConcretorCreator1();product1=creator1.factory();creator2=new ConcretorCreator2();producet2=creator2.factory();}}
?