首页 > 代码库 > 设计模式——抽象工厂模式(C++实现)
设计模式——抽象工厂模式(C++实现)
1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 7 class STAbstractProductA 8 { 9 public: 10 virtual void use() = 0; 11 }; 12 13 class STProductA1: public STAbstractProductA 14 { 15 public: 16 virtual void use() 17 { 18 cout<< "use ProductA1............"<< endl; 19 } 20 }; 21 22 class STProductA2: public STAbstractProductA 23 { 24 public: 25 virtual void use() 26 { 27 cout<< "use ProductA2............"<< endl; 28 } 29 }; 30 31 class STAbstractProductB 32 { 33 public: 34 virtual void eat() = 0; 35 }; 36 37 class STProductB1: public STAbstractProductB 38 { 39 public: 40 virtual void eat() 41 { 42 cout<< "eat ProductB1............"<< endl; 43 } 44 }; 45 46 class STProductB2: public STAbstractProductB 47 { 48 public: 49 virtual void eat() 50 { 51 cout<< "eat ProductB2............"<< endl; 52 } 53 }; 54 55 class STAbstractFactory 56 { 57 public: 58 virtual STAbstractProductA* CreateProductA() = 0; 59 virtual STAbstractProductB* CreateProductB() = 0; 60 }; 61 62 class STConcreteFactoryA: public STAbstractFactory 63 { 64 public: 65 virtual STAbstractProductA* CreateProductA() 66 { 67 return new STProductA1; 68 } 69 virtual STAbstractProductB* CreateProductB() 70 { 71 return new STProductB1; 72 } 73 }; 74 75 class STConcreteFactoryB: public STAbstractFactory 76 { 77 public: 78 virtual STAbstractProductA* CreateProductA() 79 { 80 return new STProductA2; 81 } 82 virtual STAbstractProductB* CreateProductB() 83 { 84 return new STProductB2; 85 } 86 }; 87 88 int main(int argc, char* argv[]) 89 { 90 STAbstractFactory* fc = new STConcreteFactoryA(); 91 STAbstractProductA* pa = fc->CreateProductA(); 92 STAbstractProductB* pb = fc->CreateProductB(); 93 94 pa->use(); 95 pb->eat(); 96 97 STAbstractFactory* fc2 = new STConcreteFactoryB(); 98 STAbstractProductA* pa2 = fc2->CreateProductA(); 99 STAbstractProductB* pb2 = fc2->CreateProductB();100 101 pa2->use();102 pb2->eat();103 104 return 0;105 }106 ////////////////////////////////////////107 [root@ ~/learn_code/design_pattern/9_abstract_factory]$ ./abstract_factory 108 use ProductA1............109 eat ProductB1............110 use ProductA2............111 eat ProductB2............
设计模式——抽象工厂模式(C++实现)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。