策略模式

 C++设计模式全篇  

含有许多条件判断语句的代码通常都需要Strategy模式!!!

如果Strategy对象没有实例变量,那么上下文可以共享同一个Strategy对象,可以节省对象开销!

#include <iostream>

using namespace std;

class strategy

{

public:

virtual void AlgorithmInterface() = 0;

};



class ConcreteStrategyA : public strategy

{

public:

virtual void AlgorithmInterface()

{

cout<<"算法A实现 "<<"ConcreteStrategyA :: AlgorithmInterface()方法"<<endl;

}

};



class ConcreteStrategyB : public strategy

{

public:

virtual void AlgorithmInterface()

{

cout<<"算法B实现 "<<"ConcreteStrategyB :: AlgorithmInterface()方法"<<endl;

}

};



class ConcreteStrategyC : public strategy

{

public:

virtual void AlgorithmInterface()

{

cout<<"算法C实现 "<<"ConcreteStrategyC :: AlgorithmInterface()方法"<<endl;

}

};



class Context

{

public:

Context(strategy* strate):m_strate(strate)

{

}

void ContextInterface()

{

m_strate->AlgorithmInterface();

}

private:

strategy* m_strate;

};

int main()

{

Context *context = new Context(new ConcreteStrategyA());

context->ContextInterface();

context = new Context(new ConcreteStrategyB());

context->ContextInterface();

context = new Context(new ConcreteStrategyC());

context->ContextInterface();



system("PAUSE");

return 0;

}

 

posted @ 2014-03-14 21:47  jadeshu  阅读(106)  评论(0编辑  收藏  举报