设计模式----Strategy(策略)
2010-02-06 01:02
239 查看
作用:
定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换.本模式使得算法可独立于使用它的客户而变化.
解析:
简而言之一句话,Strategy模式是对算法的封装.处理一个问题的时候可能有多种算法,这些算法的接口(输入参数,输出参数等)都是一致的,那么可以考虑采用Strategy模式对这些算法进行封装,在基类中定义一个函数接口就可以了.
定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换.本模式使得算法可独立于使用它的客户而变化.
解析:
简而言之一句话,Strategy模式是对算法的封装.处理一个问题的时候可能有多种算法,这些算法的接口(输入参数,输出参数等)都是一致的,那么可以考虑采用Strategy模式对这些算法进行封装,在基类中定义一个函数接口就可以了.
#include <iostream> using namespace std; class Strategy { public: virtual ~Strategy(){} virtual void AlgorithmInterface() = 0; }; class Context { public: Context(Strategy *pStrategy) : m_pStrategy(pStrategy) { } ~Context() { delete m_pStrategy; m_pStrategy = NULL; } void ContextInterface() { if (NULL != m_pStrategy) { m_pStrategy->AlgorithmInterface(); } } private: Strategy* m_pStrategy; }; class ConcreteStrategyA : public Strategy { public: virtual ~ConcreteStrategyA(){} virtual void AlgorithmInterface() { cout << "AlgorithmInterface Implemented by ConcreteStrategyA\n"; } }; class ConcreteStrategyB : public Strategy { public: virtual ~ConcreteStrategyB(){} virtual void AlgorithmInterface() { cout << "AlgorithmInterface Implemented by ConcreteStrategyB\n"; } }; class ConcreteStrategyC : public Strategy { public: virtual ~ConcreteStrategyC(){} virtual void AlgorithmInterface() { cout << "AlgorithmInterface Implemented by ConcreteStrategyC\n"; } }; void main() { Strategy* pStrategy = new ConcreteStrategyA(); Context* pContextA = new Context(pStrategy); pContextA->ContextInterface(); delete pContextA; pStrategy = new ConcreteStrategyB(); Context* pContextB = new Context(pStrategy); pContextB->ContextInterface(); delete pContextB; pStrategy = new ConcreteStrategyC(); Context* pContextC = new Context(pStrategy); pContextC->ContextInterface(); delete pContextC; }
相关文章推荐
- iOS应用运用设计模式中的Strategy策略模式的开发实例
- [设计模式]002-设计模式之策略模式Strategy
- 设计模式-策略模式(Strategy)
- 软件设计之策略(Strategy)模式与装饰器模式
- 设计模式22:Strategy 策略模式(行为型模式)
- 【Java设计模式】(2)策略模式Strategy
- 【设计模式】策略模式Strategy_02
- php设计模式 Strategy(策略模式)
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- Head First 设计模式 C++实现-Strategy(策略模式)
- 设计模式(十八)之 Strategy(策略)
- 自己工资自己算,策略设计模式(Strategy)
- 设计模式读书笔记之策略模式(Strategy)
- java 设计模式学习笔记十五 strategy 策略设计模式
- 设计模式(4)-行为型-策略模式(Strategy)
- 设计模式之21 - 策略模式Strategy
- 设计模式--策略模式(Strategy)
- [设计模式]策略模式(strategy)---算术运算
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- 设计模式之Strategy(策略)