策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用算法,减少了各种算法类与使用算法类之间的耦合。
// Strategy.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
class IStrategy
{
public:
virtual void algorithmInterface()= 0;
};
class StrategyA: public IStrategy
{
void algorithmInterface()
{
cout<< "Strategy A algorithmInterface"<<endl;
}
};
class StrategyB: public IStrategy
{
void algorithmInterface()
{
cout<<"Strategy B algorithmInterface"<<endl;
}
};
class StrategyContext
{
public:
void setStrategy( IStrategy *stragety)
{
myStrategy = stragety;
}
void executeStrategy()
{
myStrategy->algorithmInterface();
}
private:
IStrategy *myStrategy;
};
int _tmain(int argc, _TCHAR* argv[])
{
StrategyContext context;
StrategyA * stragetyA = new StrategyA();
context.setStrategy( stragetyA );
context.executeStrategy();
delete stragetyA;
StrategyB * stragetyB = new StrategyB();
context.setStrategy( stragetyB );
context.executeStrategy();
delete stragetyB;
system("pause");
return 0;
}