设计模式---AbstractFactoryPattern

 1 #include<iostream>
 2 using namespace std;
 3 
 4 //product
 5 class AbstractProduct{
 6 public:
 7   virtual ~AbstractProduct(){}
 8   virtual void Operation() = 0;
 9 };
10 
11 class ProductA:public AbstractProduct{
12 public:
13   void Operation(){
14     cout<<"ProductA Operation"<<endl;
15   }
16 };
17 
18 class ProductB:public AbstractProduct{
19 public:
20   void Operation(){
21     cout<<"ProductB Operation"<<endl;
22   }
23 };
24 
25 //factory
26 class AbstractFactory{
27 public:
28   virtual ~AbstractFactory(){}
29   virtual AbstractProduct* CreateProductA() = 0;
30   virtual AbstractProduct* CreateProductB() = 0;
31 };
32 
33 class ConcreteFactory:public AbstractFactory{
34 public:
35   AbstractProduct* CreateProductA(){
36     return new ProductA();
37   }
38   AbstractProduct* CreateProductB(){
39     return new ProductB();
40   }
41 
42 };
43 
44 /**
45  * @brief this is a larobot ros node example
46  */
47 int main(int argc, char** argv)
48 {
49   AbstractFactory* factory = new ConcreteFactory();
50   AbstractProduct* productA = factory->CreateProductA();
51   AbstractProduct* productB = factory->CreateProductB();
52   productA->Operation();
53   productB->Operation();
54   delete factory;
55   delete productA;
56   delete productB;
57   return 0;
58 }

参考:

1.https://www.cnblogs.com/weiyouqing/p/7544988.html

2.http://github.com/micooz/DesignPattern

posted @ 2019-11-06 09:17  景景景色分明  阅读(122)  评论(0)    收藏  举报