设计模式---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

浙公网安备 33010602011771号