随笔-91  评论-137  文章-0  trackbacks-0
 

简单工厂模式

前序:

请用一种面向对象的语言来实现一个计算器控制台程序,要求输入两个数和运算符并得到结果

简单工厂模式:

从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(StaticFactory Method)模式,但不属于23GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

实现方式(UML类图):

实现代码:

 

#include <stdio.h>

 

class Operation

{

public:

       double NumberA;

       double NumberB;

 

       virtual double GetResult()

       {

              return 0;

       }

};

 

class OperationAdd : public Operation

{

public:

       virtual double GetResult()

       {

              return NumberA + NumberB;

       }

};

 

class OperationSub : public Operation

{

public:

       virtual double GetResult()

       {

              return NumberA - NumberB;

       }

};

 

class OperationMul : public Operation

{

public:

       virtual double GetResult()

       {

              return NumberA * NumberB;

       }

};

 

class OperationDiv : public Operation

{

public:

       virtual double GetResult()

       {

              if(NumberB == 0) return 0;

              return NumberA / NumberB;

       }

};

 

class OperationFactory

{

public:

       static Operation* createOperate(char operate)

       {

              Operation* oper = 0;

              switch(operate)

              {

                     case '+':

                            oper = new OperationAdd();

                            break;

                     case '-':

                            oper = new OperationSub();

                            break;

                     case '*':

                            oper = new OperationMul();

                            break;

                     case '/':

                            oper = new OperationDiv();

                            break;

              }

              return oper;

       }

};

 

int main()

{

       Operation* oper = OperationFactory::createOperate('+');

       oper->NumberA = 1;

       oper->NumberB = 2;

       printf("%f",oper->GetResult());

       delete oper;

       return 0;

}

运行结果:

3.0000


所有文件打包下载
posted on 2011-04-28 22:53 lwch 阅读(1697) 评论(0)  编辑 收藏 引用 所属分类: 设计模式

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理