策略模式

来源:互联网 发布:网络性与爱 第一季 编辑:程序博客网 时间:2024/05/14 02:45
//策略基类class COperation{public:intm_nFirst;intm_nSecond;virtualdoubleGetResult(){doubledResult=0;returndResult;}};//策略具体类—加法类class AddOperation:publicCOperation{public:AddOperation(inta,intb){m_nFirst=a;m_nSecond=b;}virtualdoubleGetResult(){returnm_nFirst+m_nSecond;}};class Context{private:COperation*op;public:Context(COperation*temp){op=temp;}doubleGetResult(){returnop->GetResult();}};//客户端int main(){int a,b;char c;cin>>a>>b;cout<<”请输入运算符:;cin>>c;switch(c){case ‘+’:Context*context=newContext(newAddOperation(a,b));cout<<context->GetResult()<<endl;break;default:break;}return 0;}
</pre><pre name="code" class="cpp">

定义算法家族,分别封装起来,让它们之间可以互相替换,让算法变化,不会影响 到用户 


GOOD:适合类中的成员以方法为主,算法经常变动;简化了单元测试(因为每个 
算法都有自己的类,可以通过自己的接口单独测试。 策略模式和简单工厂基本相同,但简单工厂模式只能解决对象创建问题,对于经常 
变动的算法应使用策略模式。 
BUG:客户端要做出判断 。

0 0
原创粉丝点击