码迷,mamicode.com
首页 > 其他好文 > 详细

简单工厂模式

时间:2014-08-26 22:37:36      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   ar   art   div   

【1】什么是简单工厂模式?

核心思想:用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。

理解:根据条件生成不同的实例。利用多态的特性,调用同名方法,不同的实例将得到不同的结果。

【2】代码示例如下:

代码如下:

bubuko.com,布布扣
  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.

顺序   选择   循环   总结

简单工厂模式

标签:style   blog   http   color   os   io   ar   art   div   

原文地址:http://www.cnblogs.com/Braveliu/p/3938295.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!