策略模式可以根据用户需要更新策略,而无需改变使用代码;同时也方便进行策略的扩展
首先需要一组策略:
class Strategy
{
public:
virtual void work() = 0;
}
class StrategyA : Strategy
{
public:
void work(){cout << "strategyA working << std::endl;"}
}
然后创建使用该策略的类:
template<class <span style="font-family: Arial, Helvetica, sans-serif;">T></span>
class StrategyUserA()
{
private:
T* m_pStrategy;
public:
StrategyUserA()
{
m_pStrategy = new T();
}
void Work(){m_pStrategy->work();}
}
使用方法如下:
StrategyUserA<StrategyA> user;
user.Work();