作用:
定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
解析:
简而言之一句话,Strategy模式是对算法的封装。处理一个问题的时候可能有多种算法,这些算法的接口(输入参数,输出参数等)都是一致的,那么可以考虑采用Strategy模式对这些算法进行封装,在基类中定义一个函数接口就可以了。
实现:
1)Strategy.h
/**//******************************************************************** purpose: Strategy模式的演示代码 #ifndef STRATEGY_H class Strategy; class Context void ContextInterface(); class Strategy virtual void AlgorithmInterface() = 0; class ConcreateStrategyA virtual void AlgorithmInterface(); #endif |
/**//******************************************************************** purpose: Strategy模式的演示代码 #include <iostream> Context::Context(Strategy *pStrategy) Context::~Context() void Context::ContextInterface() void ConcreateStrategyA::AlgorithmInterface() |
/**//******************************************************************** purpose: Strategy模式的测试代码 #include "Strategy.h" int main() pContext->ContextInterface(); delete pContext; return 0; |