上篇我们讲了迭代器模式,这篇我们再来讲一下使用率很高的策略模式,策略模式的本质就是实现算法的复用,将环境调用中的算法抽象出来单独为类,环境调用就只调用算法的抽象类,要添加或修改算法时就只修改算法的具体类就可以了,不影响环境类,符合开闭原则,非常方便。
策略模式:
以下代码在VS2012上编译通过
.h文件
class Strategy//抽象算法策略类
{
public :
virtual void algorithm();
};
class ConcreteStrategy:public Strategy//具体算法策略类1
{
public:
void algorithm();//算法1
};
class ConcreteStrategy2:public Strategy//具体算法策略类2
{
public:
void algorithm();//算法2
};
class Environment//环境调用类
{
private:
Strategy* m_strategy;
public:
Environment();
void setStrategy(Strategy* strategy_);
Strategy* getStrategy();
};
.cpp文件