设计模式的解析和实现(C++)之十六-Strategy模式
2012-11-12 16:57
621 查看
作用:
定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
解析:
简而言之一句话,Strategy模式是对算法的封装。处理一个问题的时候可能有多种算法,这些算法的接口(输入参数,输出参数等)都是一致的,那么可以考虑采用Strategy模式对这些算法进行封装,在基类中定义一个函数接口就可以了。
实现:
1)Strategy.h
2)Strategy.cpp
3)Main.cpp
定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
解析:
简而言之一句话,Strategy模式是对算法的封装。处理一个问题的时候可能有多种算法,这些算法的接口(输入参数,输出参数等)都是一致的,那么可以考虑采用Strategy模式对这些算法进行封装,在基类中定义一个函数接口就可以了。
实现:
1)Strategy.h
#ifndef STRATEGY_H #define STRATEGY_H class Strategy; class Context { public: Context(Strategy *pStrategy); ~Context(); void ContextInterface(); private: Strategy* m_pStrategy; }; class Strategy { public: virtual ~Strategy(){} virtual void AlgorithmInterface() = 0; }; class ConcreateStrategyA : public Strategy { public: virtual ~ConcreateStrategyA(){} virtual void AlgorithmInterface(); }; #endif |
#include <iostream> #include "Strategy.h" Context::Context(Strategy *pStrategy) : m_pStrategy(pStrategy) { } Context::~Context() { delete m_pStrategy; m_pStrategy = NULL; } void Context::ContextInterface() { if (NULL != m_pStrategy) { m_pStrategy->AlgorithmInterface(); } } void ConcreateStrategyA::AlgorithmInterface() { std::cout << "AlgorithmInterface Implemented by ConcreateStrategyAn"; } |
#include "Strategy.h" int main() { Strategy* pStrategy = new ConcreateStrategyA(); Context* pContext = new Context(pStrategy); pContext->ContextInterface(); delete pContext; return 0; } |
相关文章推荐
- 常见设计模式的解析和实现(C++)之十六-Strategy模式
- 常见设计模式的解析和实现(C++)之十六-Strategy模式
- 常见设计模式解析和实现(C++)FlyWeight模式
- 常见设计模式的解析和实现(C++)之八-Composite模式
- 常见设计模式的解析和实现(C++)之十八-Iterator模式
- 常见设计模式的解析和实现(C++)之六-Adapt模式
- 常见设计模式的解析和实现(C++)之十四-Command模式
- 设计模式之strategy模式(C++实现)
- 常见设计模式解析和实现(C++)FlyWeight模式
- 常见设计模式的解析和实现(C++)之九-Decorator模式
- 常见设计模式的解析和实现(C++)之十七-State模式
- 设计模式解析和实现(C++)之八-Composite模式
- [GoF设计模式]Proxy模式和Strategy模式的C++实现
- 常见设计模式的解析和实现(C++)之十五-Observer模式
- 常见设计模式的解析和实现(C++)之十-Proxy模式
- 常见设计模式的解析和实现(C++)之五-Singleton模式
- 设计模式的解析和实现(C++)之一-Factory模式
- 设计模式的解析和实现(C++)之十三-FlyWeight模式
- 用C++进行设计模式的解析和实现
- 程序基础设计模式的解析和实现(C++)之二十-Visitor模式