定义算法家族,分别封装起来,让它们可以相互替换,让算法变化不会影响到用户。策略模式与简单工厂模式基本相同,但简单工厂只能解决对象创建问题,对于经常变动的算法应使用策略模式。
代码实现:
#includeusing 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<<"输入操作数吧,中间空格间隔:"< >a>>b; Context* test=new Context('+'); cout< GerResult()<