对象创建模式——抽象工厂(Abstract Factory)

来源:互联网 发布:淘宝css 订购价格 编辑:程序博客网 时间:2024/06/07 09:24
#include <iostream>using namespace std;class AbstractFactory;class ConcreteFactory1;class ConcreteFactory2;class AbstractProductA;class AbstractProductB;class ProductA1;class ProductA2;class ProductB1;class ProductB2;class AbstractFactory{public:virtual AbstractProductA  CreateProductA()=0;virtual AbstractProductB CreateProductB()=0;};class AbstractProductA{public:int proid;void Show(){cout << proid <<endl;}};class AbstractProductB{public:int proid;void Show(){cout << proid <<endl;}};class ProductA1: public AbstractProductA{public:};class ProductA2: public AbstractProductA{public:};class ProductB1: public AbstractProductB{public:};class ProductB2: public AbstractProductB{public:};class  ConcreteFactory1:public AbstractFactory{public:virtual AbstractProductA  CreateProductA(){ProductA1 absA;absA.proid = 11;return absA;};virtual AbstractProductB  CreateProductB(){ProductB1 absB;absB.proid = 12;return absB;};};class  ConcreteFactory2: public AbstractFactory{public:virtual AbstractProductA CreateProductA(){ProductA2 absA;absA.proid = 21;return absA;}virtual AbstractProductB  CreateProductB(){ProductB2 absB;absB.proid = 22;return absB;}};class Client{public:AbstractFactory *abs;AbstractProductA apA;AbstractProductB apB;Client(){abs=new ConcreteFactory2();apA=abs->CreateProductA();apB=abs->CreateProductB();apA.Show();apB.Show();}};int main(){//cout << "hello";Client A;return 0;}

原创粉丝点击