一、功能
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。
二、示例代码
namespace DesignPattern_FactoryMethod { class Product { /*...*/ } ; class ConcreteProduct : public Product { /*...*/ } ; // class Creator class Creator { public: virtual Product* CreateProduct() = 0 ; void Operate() ; } ; void Creator::Operate() { // ... Product *p = CreateProduct() ; // ... } // class ConcreteCreator class ConcreteCreator : public Creator { public: virtual Product* CreateProduct() { return new ConcreteProduct() ; } } ; } 客户端代码: { using namespace DesignPattern_FactoryMethod ; ConcreteCreator p ;
Product *productIns; productIns = p.Operate() ; }
三、说明
示例代码本意要生成一个ConcreteProduct 对象,先设计class Product, 并使class ConcreteProduct继承于Product, 使用工厂方法设计模式,设计Creator类和ConcreteCreator 类。
客户代码中,ConcreteCreator p对象,调用Operate()方法中调用Product *p = CreateProduct(),就会调用到子类ConcreteCreator 的CreateProduct()方法,把Product对象生成步骤推迟到 具体子类ConcreteCreator 中 生成new ConcreteProduct()。