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

来源:互联网 发布:全球直播软件 编辑:程序博客网 时间:2024/06/06 20:02

一:意图

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

二:类图

三、组成元素:

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





原创粉丝点击