读书人

设计模式之工厂方法方式

发布时间: 2013-11-09 17:06:47 作者: rapoo

设计模式之工厂方法模式

????? 简单工厂模式在一定程度上满足了"开闭原则"(对扩展开放,对修改关闭)。即某一对象请求实例化时只需要向工厂方法

?

请求,然后由工厂方法负责创建某一具体对象并返回它,而不需要修改现有代码。但是工厂方法里可以创建的对象是有限

?

的,一旦有新的产品需要增加时就需要修改现有工厂类代码,将必要的逻辑加到工厂类中。

??????

?????? 工厂方法模式克服了这个缺点。工厂方法模式也是类的创建模式,又叫多态性工厂模式,它是定义一个创建产品对象

?

的工厂接口,将实际创建工作推迟到子类中。

?

??????? 在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做。

?

源码实例

?

/** * 产品接口 * @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();}}

?

读书人网 >软件开发

热点推荐