标签:style blog http color os io ar art div
【1】什么是简单工厂模式?
核心思想:用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。
理解:根据条件生成不同的实例。利用多态的特性,调用同名方法,不同的实例将得到不同的结果。
【2】代码示例如下:
代码如下:
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 /* 6 * 运算基类 7 */ 8 class Operation 9 { 10 public: 11 double numberA; 12 double numberB; 13 public: 14 virtual double getResult() 15 { 16 return 0; 17 } 18 }; 19 20 /* 21 * 加法运算子类 22 */ 23 class addOperation : public Operation 24 { 25 double getResult() 26 { 27 return numberA + numberB; 28 } 29 }; 30 31 /* 32 * 减法运算子类 33 */ 34 class subOperation : public Operation 35 { 36 double getResult() 37 { 38 return numberA - numberB; 39 } 40 }; 41 42 /* 43 * 乘法运算子类 44 */ 45 class mulOperation : public Operation 46 { 47 double getResult() 48 { 49 return numberA * numberB; 50 } 51 }; 52 53 /* 54 * 除法运算子类 55 */ 56 class divOperation : public Operation 57 { 58 double getResult() 59 { 60 return numberA / numberB; 61 } 62 }; 63 64 /* 65 * 简单构建工厂 66 */ 67 class operFactory 68 { 69 public: 70 static Operation *createOperation(char c) 71 { 72 switch (c) 73 { 74 case ‘+‘: 75 return new addOperation; 76 break; 77 case ‘-‘: 78 return new subOperation; 79 break; 80 case ‘*‘: 81 return new mulOperation; 82 break; 83 case ‘/‘: 84 return new divOperation; 85 break; 86 default: 87 break; 88 } 89 } 90 }; 91 92 /* 93 * 客户端应用示例 94 */ 95 void main() 96 { 97 Operation *oper = operFactory::createOperation(‘+‘); 98 oper->numberA = 9; 99 oper->numberB = 99; 100 cout << oper->getResult() << endl; 101 }
Good Good Study, Day Day Up.
顺序 选择 循环 总结
标签:style blog http color os io ar art div
原文地址:http://www.cnblogs.com/Braveliu/p/3938295.html