一:意图
提供一个创建一系列相关或者相互依赖对象的接口,而无需指定具体的类;
二:类图
三、组成元素:
AbstractFactory:声明一个抽象产品对象的操作接口;
ConcreteFactroy:实现创建对象的具体操作;
AbstractProduct:一类产品的抽象接口;
Product:被相应工厂创建的具体产品;
四、实现:
#include "iostream" using namespace std; class AbstractProductA { }; class ProductA1:public AbstractProductA { }; class ProductA2:public AbstractProductA { }; class AbstractProductB { }; class ProductB1:public AbstractProductB { }; class ProductB2:public AbstractProductB { }; class AbstractFactory { public: virtual AbstractProductA* CreateProductA()=0; virtual AbstractProductB* CreateProductB()=0; }; class ConcreteFactroy1:public AbstractFactory { public: AbstractProductA* CreateProductA() { cout<<"ProductA1 created!"<<endl; return new ProductA1; } AbstractProductB* CreateProductB() { cout<<"ProductB1 created!"<<endl; return new ProductB1; } }; class ConcreteFactroy2:public AbstractFactory { public: AbstractProductA* CreateProductA() { cout<<"ProductA2 created!"<<endl; return new ProductA2; } AbstractProductB* CreateProductB() { cout<<"ProductB2 created!"<<endl; return new ProductB2; } }; void main() { AbstractFactory* abs1=new ConcreteFactroy1(); AbstractFactory* abs2=new ConcreteFactroy2(); AbstractProductA* productA1=abs1->CreateProductA(); AbstractProductB* productB1=abs1->CreateProductB(); AbstractProductA* productA2=abs2->CreateProductA(); AbstractProductB* productB2=abs2->CreateProductB(); }