您的位置:首页 > 编程语言 > C语言/C++

C++设计模式之一:Abstract Factory(抽象工厂)

2012-05-28 14:06 274 查看
一:意图

提供一个创建一系列相关或者相互依赖对象的接口,而无需指定具体的类;

二:类图



三、组成元素:

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();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: