您的位置:首页 > 其它

大话设计模式01.2 简单工厂模式

2012-07-21 07:20 148 查看
我们在01节中最后提到了"简单计算器"的继承体系中类比较多,如何使用了,不妨参考简单工厂模式,即引入了CreateOperator类,将类的创建过程也打包封装起来,则UML变为:



如此修改的好处:

1. 可维护性:修改某一种算法,仅需修改某一个类即可

2. 灵活性:如果需要增加一种算法,仅需要增加新的类即可

3. 业务和表现分离:可给多种展示层提供算法支持

 

整体代码演变为:

#include
<iostream>

using
namespace std;

 

class
Operator{

public:

double
GetResult(double a, double b)=0;

};

class
OperatorAdd : public
Operator{

public:

double
GetResult(double a, double b) {

return a+b;

}

};

 

class
OperatorSub: public
Operator{

public:

double
GetResult(double a, double b) {

return a-b;

}

};

 

class
OperatorMul: public
Operator{

public:

double
GetResult(double a, double b) {

return a*b;

}

};

 

class
OperatorDiv: public
Operator{

public:

double
GetResult(double a, double b) {

return a/b;

}

};

 

class
CreateOperator{

public:

static
Operator* createOperator(char oper)

{

switch(oper) {

case
'+': return
new OperatorAdd();

break;

case
'-': return
new OperatorSub();

break;

case
'*': return
new OperatorMul();

break;

case
'/': return
new OperatorDiv();

break;

}

return NULL;

}

};

 

int
main(void) {

double numA, numB;

char oper;

cin >> numA >> oper >> numB;

cout << "Result of " << numA << oper << numB << "="

<< CreateOperator::createOperator(oper)(numA, numB);

return 0;

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: