策略模式:属于行为型模式
基本原理:一个类的行为或其算法可以在运行时更改
主要流程:
1.创建策略基类,并根据不同行为实例化不同的策略类。
2.使用时选择合适的策略类
注意:如果一个系统的策略太多最好考虑其他模式。
#include <iostream>
#include <string>
using namespace std;
//策略基类
class Strategy
{
public:
virtual int doOperation(int num1,int num2) = 0;
};
//派生的不同策略类
class OperationAdd : public Strategy
{
public:
int doOperation(int num1,int num2)
{
return num1+num2;
}
};
class OperationSubstract : public Strategy
{
public:
int doOperation(int num1, int num2)
{
return num1 - num2;
}
};
class OperationMultiply : public Strategy
{
public:
int doOperation(int num1, int num2)
{
return num1 * num2;
}
};
//统一使用策略的类
class Context
{
private:
Strategy *strategy;
public:
Context(Strategy *strategy)
{
this->strategy = strategy;
}
int executeStrategy(int num1,int num2)
{
return strategy->doOperation(num1,num2);
}
};
int main()
{
//选择合适的策略
Context *context = new Context(new OperationAdd());
cout<<"9 + 3 = "<<context->executeStrategy(9,3)<<endl;
context = new Context(new OperationSubstract());
cout<<"9 - 3 = "<<context->executeStrategy(9,3)<<endl;
context = new Context(new OperationMultiply());
cout<<"9 * 3 = "<<context->executeStrategy(9,3)<<endl;
return 0;
}