策略模式的优点:
适合类中的成员以方法为主,算法经常变动,简化了单元测试。
缺点:
客户端要做出判断
具体代码如下:
#include <iostream>
using namespace std;
//策略基类
class COperation
{
public:
int m_First;
int m_Second;
virtual double GetResult(){
double dResult = 0;
return dResult;
}
private:
};
//策略具体类-----加法类
class AddOperation :public COperation{
public:
AddOperation(int a, int b){
m_First = a;
m_Second = b;
}
virtual double GetResult(){
return m_First + m_Second;
}
};
//用来维护一个策略对象的引用
class Context{
private:
COperation *op;
public:
Context(COperation* tmp){
op = tmp;
}
double GetResult(){
return op->GetResult();
}
};
int _tmain(int argc, _TCHAR* argv[])
{
int a, b;
char c;
cin >> a >> b;
cout << "请输入运算符:";
cin >> c;
switch (c)
{
case '+':
Context *context = new Context(new AddOperation(a , b));
cout << context->GetResult() << endl;
break;
}
getchar();
getchar();
return 0;
}