定义算法家族,分别封装起来,让它们可以相互替换,让算法变化不会影响到用户。策略模式与简单工厂模式基本相同,但简单工厂只能解决对象创建问题,对于经常变动的算法应使用策略模式。
代码实现:
#include<iostream>
using namespace std;
//策略基类
class COperation
{
public:
int m_nFirst;
int m_nSecond;
virtual double GerResult()
{
double dResult=0;
return dResult;
}
};
//策略具体类-加法类
class AddOperation:public COperation
{
public:
AddOperation(int a,int b)
{
m_nFirst=a;
m_nSecond=b;
}
virtual double GetResult()
{
return m_nFirst+m_nSecond;
}
};
class Context
{
private:
COperation* op;
public:
Context(char cType)
{
switch(cType)
{
case'+':
op=new AddOperation(3,8);
break;
default:
op=new AddOperation();
break;
}
}
double GetResult()
{
return op->GerResult();
}
};
//客户端
int main()
{
int a,b;
char c;
cout<<"输入操作数吧,中间空格间隔:"<<endl;
cin>>a>>b;
Context* test=new Context('+');
cout<<test->GerResult()<<endl;
return 0;
}