#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");
}
设计模式之策略模式
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 策略模式,是我们接触到的第一个设计模式,也是较容易理解的一个模式。我们可以给它下一个定义:** 定义了算法族,分别...
- 前言 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们之间可以相互替换。这些策略算法是相同行为的不同...