策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用算法,减少了各种算法类与使用算法类之间的耦合。

 

// 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;
}

 

posted on 2011-11-24 16:16  Just a Programer  阅读(164)  评论(0编辑  收藏  举报