策略模式(strategy):它定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法根据不用需求动态变化,而不会影响到使用算法的客户。 UML图:
代码实现:
class Strategy
{
public:
virtual void AlgorithmInterface()=0;
};
class ConcreteStrategyA:public Strategy
{
public:
void AlgorithmInterface(){cout<<"实现算法A"<<endl;}
};
class ConcreteStrategyB:public Strategy
{
public:
void AlgorithmInterface(){cout<<"实现算法B"<<endl;}
};
class ConcreteStrategyC:public Strategy
{
public:
void AlgorithmInterface(){cout<<"实现算法C"<<endl;}
};
class Context
{
Strategy &strategy;
public:
Context(Strategy &some_strategy):strategy(some_strategy){}
void ContextInterface(){strategy.AlgorithmInterface();}//调用具体算法
};
在我的另一篇博文里,也是使用的策略模式,详情请点击
《如何打一把好锁》