策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是形式不同,它可以以相同的方式调用所有的算法,减少各种算法类与使用算法类之间的耦合。策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如各地的出租车计费标准,上海一种算法,昆山又是一种算法.(摘自大话设计模式)
#include <iostream>
using namespace std;
class StrategyInterface
{
public:
virtual void exectue() = 0;
};
class StrategyInterfaceA: public StrategyInterface
{
public:
virtual void exectue()
{
cout<< "it is StrategyInterfaceA"<<endl;
}
};
class StrategyInterfaceB: public StrategyInterface
{
public:
virtual void exectue()
{
cout<< "it is StrategyInterfaceB"<<endl;
}
};
class Context
{
private:
StrategyInterface *_strategy;
public:
Context(StrategyInterface *strategy): _strategy(strategy)
{
}
void setstrate(StrategyInterface *strategy)
{
_strategy = strategy;
}
void exectue()
{
_strategy->exectue();
}
};
int main(void)
{
StrategyInterfaceA Astrategy;
StrategyInterfaceB Bstrategy;
Context contextA(&Astrategy);
Context contextB(&Bstrategy);
contextA.exectue();
contextB.exectue();
contextA.setstrate(&Bstrategy);
contextA.exectue();
return 0;
}