Factory模式----为一类对象提供创建接口.
特点:当Factory仅仅提供了创建对象的接口时,这时候可以用模板的形式定义Factory类.
此时的工厂直接生产.
例子:
代码:
Factory类提供一个创建对象的接口:virtual
class CreateClass()=0; //class 代表一个抽象类
ClassFactory则实现这个接口,virtual
class CreateClass(){return new
class()}; //class代表一个对象类.
使用模板的话:
class Factory
{
public:
~Factory();
virtual class Createclass()=0;
protected:
Factory();
};
typedef class<type>
class classFactory:public Factory;
{
public:
classFactory();
~classFactory();
type Createclass(){return new type;}
};
当Factory不仅提供了创建对象的接口,同时将对象的实例化放到了工厂的子类中.
把Factory看作是总厂,负责提供"技术".方法;Factory的子类看作是分工厂,负责生产具体的物品.
这样,生产一种商品就要派生一个子类.为了减少Factory的子类,也可以采用模板的形式定义子类.
AbstractFactory模式----为一组对象提供创建接口.
AbstractFactory |
ChildFactoryA |
ChildFactoryB |
.. |
物品1生产 |
物品2生产(或者更多相关的) |
物品3生产 |
物品4(more) |
|
|
总之,抽象工厂是用来封装创建一组或一类相关对象的接口.