抽象工厂

来源:互联网 发布:骑士cms二次开发手册 编辑:程序博客网 时间:2024/05/19 06:18

抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

class ProductA{public:virtual void Show()=0;};class ProductA1:public ProductA{public:void Show(){cout<<"ProductA1"<<endl;}};class ProductA2:public ProductA{public:void Show(){cout<<"ProductA2"<<endl;}};class ProductB{public:virtual void Method()=0;};class ProductB1:public ProductB{public:void Method(){cout<<"ProductB1"<<endl;}};class ProductB2:public ProductB{public:void Method(){cout<<"ProductB2"<<endl;}};class Factory{public:virtual ProductA *CreateProductA()=0;virtual ProductB *CreateProductB()=0;};class Factory1:public Factory{public:ProductA *CreateProductA(){return new ProductA1();}ProductB *CreateProductB(){return new ProductB1();}};class Factory2:public Factory{public:ProductA *CreateProductA(){return new ProductA2();}ProductB *CreateProductB(){return new ProductB2();}};void main(){Factory *f= new Factory1();ProductA *pa=f->CreateProductA();ProductB *pb=f->CreateProductB();pa->Show();pb->Method();}
1.多个抽象产品类,每个抽象产品可派生出多个具体产品类。抽象产品productA,派生出productA1,productA2,抽象产品productB,派生出productB1,productB2。

2.一个抽象工厂类,可以派生出多个具体工厂类。抽象工厂Factroy,派生出Factory1,Factory2。

3.每个具体工厂类可创建多个具体产品实例。Factory1可创建productA,productB,Factory2可创建productA,productB。


抽象工厂和工厂方法不同:

抽象工厂:用来创建多个产品的等级结构,有多个方法,创建一系列产品,多个抽象产品类,可创建多个产品实例。

工厂方法:用来创建一个产品的等级结构,只有一个方法,创建一种产品,只有一个抽象产品类,只能创建一个产品实例。

0 0
原创粉丝点击