设计模式之策略模式

#include<iostream>
//策略基类
class Strategy {
public:
    virtual float DoPeration(float num1, float num2) = 0;
};

//加法
class OperationAdd :public Strategy {
public:

    float DoPeration(float num1, float num2) override {
        return num1 + num2;
    }

};

//减法
class OperationSubstract:public Strategy {
public:

    float DoPeration(float num1, float num2) override {
        return num1 - num2;
    }
};

//策略模式使用类
class Context {
    //具体策略
    Strategy* strategy;
public:
    
    Context(Strategy* sty) {
        strategy = sty;
    }

    //改变策略
    void SetStrategy(Strategy* sty) {
        strategy = sty;
    }
    //执行策略
    float ExecuteStrategy(float num1, float num2) {
        return strategy->DoPeration(num1,num2);
    }
};
int main()
{
    Strategy* strategy_add = new OperationAdd();
    Strategy* strategy_substract = new OperationSubstract();

    Context* context = new Context(strategy_add);
    std::cout << "10 +55.55 == " << context->ExecuteStrategy(10, 55.55) << "\n";

    context->SetStrategy(strategy_substract);
    std::cout<<"20 - 100 == "<<context->ExecuteStrategy(20,100)<<"\n";


    system("pause");
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 策略模式,是我们接触到的第一个设计模式,也是较容易理解的一个模式。我们可以给它下一个定义:** 定义了算法族,分别...
    六尺帐篷阅读 4,064评论 0 8
  • 前言 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们之间可以相互替换。这些策略算法是相同行为的不同...
    zhang_pan阅读 3,685评论 0 1
  • 策略模式就是定义一系列的算法,把它们的一个个封装起来,并且使它们可以相互替换,Strategy模式使算法独立于使用...
    3d0829501918阅读 2,812评论 0 3
  • 一直想把常见的设计模式系统地学习一遍,结果和大多数人一样,过了几天就没能坚持下去了。我发现学习这件事情急不得,往往...
    Neulana阅读 3,599评论 5 2
  • 在酒店房间的门口,明杰拦住了跟在后面的歆瑶,低下头说,抱一下吧。歆瑶望着放下行李张着双臂的明杰,像小鸡躲向鸡妈...
    油炸橘子皮阅读 3,744评论 0 4