策略模式就是将一系列算法进行封装,是算法可以独立于使用它的客户端记性变化。可能描述起来有点模糊,但是写出来一个简单的形式一看就会发现这种模式我们工作中自然而然的用到了很多。
#include "stdafx.h"
#include <iostream>
using namespace std;
class Strategy
{
public:
virtual void Algorithm() = 0;
};
class ConcreteStrategyA : public Strategy
{
public:
virtual void Algorithm()
{
cout<<"策略A";
}
};
class ConcreteStrategyB : public Strategy
{
public:
virtual void Algorithm()
{
cout<<"策略B";
}
};
class Context
{
public:
Context(Strategy* strategy) : m_strategy(strategy)
{
}
public:
void ContextAlgorithm()
{
m_strategy->Algorithm();
}
private:
Strategy* m_strategy;
};
int _tmain(int argc, _TCHAR* argv[])
{
ConcreteStrategyB* strategyB = new ConcreteStrategyB();
Context context(strategyB);
context.ContextAlgorithm();
return 0;
}
这个只是最简化的一个策略模式的描述,实际应用根据实际情况记性变形。