工厂方法模式(Factory method pattern)

工厂方法模式(Factory method pattern)

flyfish 2015-7-4

工厂方法模式正式定义 – 引用《HeadFirst 设计模式》

Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantiation to subclasses.

定义了一个创建对象的接口,但是由子类决定要实例化的类是那一个,其中的工厂方法让类把实例化推迟到子类

在下列情况下可以使用Factory Method模式: -引用《设计模式 – 可复用面向对象软件的基础》 1. 当一个类不知道它所必须创建的对象的类的时候。 2. 当一个类希望由它的子类来指定它所创建的对象的时候。 3. 当类将创建对象的职责委托给多个帮助子类中的某一个,,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

参与者 1 Product —定义工厂方法所创建的对象的接口。 2 ConcreteProduct —实现Product接口。 3 Creator —声明工厂方法,该方法返回一个Product类型的对象。Creator也可以定义一个工厂方 法的缺省实现,它返回一个缺省的ConcreteProduct对象。 —可以调用工厂方法以创建一个Product对象。 4 ConcreteCreator —重定义工厂方法以返回一个ConcreteProduct实例。

C++ 实现class product{public:() = 0;};class concrete_product_1 : public product{public:void do(){//关于产品1的处理}};class concrete_product_2 : public product{public:void do(){//关于产品2的处理}};class creator{public:virtual product *create_product() = 0;};class concrete_creator_1 : public creator{public:product *create_product(){return new concrete_product_1 ();}};class concrete_creator_2 : public creator{public:product *create_product(){return new concrete_product_2 ();}};//使用creator *c1 = new concrete_creator_1 ();product *p1 = c1->create_product();p1->do();creator *c2 = new concrete_creator_2 ();product *p2 = c2->create_product();p2->do();

当增加产品3的时候,只要再concrete_creator_3和concrete_product_3就可以了,与产品1和产品2无关

觉得自己做的到和不做的到,其实只在一念之间

工厂方法模式(Factory method pattern)

相关文章:

你感兴趣的文章:

标签云: