首页 > 代码库 > 简单工厂模式

简单工厂模式

【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 }
View Code

 

Good  Good  Study, Day  Day  Up.

顺序   选择   循环   总结

简单工厂模式