Strategy模式C++实现

作用:

定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换.本模式使得算法可独立于使用它的客户而变化.



UML结构图:

Strategy模式C++实现

实现:

1)Strategy.h


Strategy模式C++实现Strategy模式C++实现/*********

Strategy模式C++实现 created: 2006/08/06

Strategy模式C++实现 filename: Strategy.h

Strategy模式C++实现 author: 李创

Strategy模式C++实现http://www.cppblog.com/converse/

Strategy模式C++实现

Strategy模式C++实现 purpose: Strategy模式的演示代码

Strategy模式C++实现
**********/

Strategy模式C++实现

Strategy模式C++实现#ifndef STRATEGY_H

Strategy模式C++实现
#defineSTRATEGY_H

Strategy模式C++实现

Strategy模式C++实现
classStrategy;

Strategy模式C++实现

Strategy模式C++实现
classContext

Strategy模式C++实现Strategy模式C++实现
{

Strategy模式C++实现
public:

Strategy模式C++实现 Context(Strategy
pStrategy);

Strategy模式C++实现
~Context();

Strategy模式C++实现

Strategy模式C++实现
voidContextInterface();

Strategy模式C++实现
private:

Strategy模式C++实现 Strategy
m_pStrategy;

Strategy模式C++实现}
;

Strategy模式C++实现

Strategy模式C++实现
classStrategy

Strategy模式C++实现Strategy模式C++实现
{

Strategy模式C++实现
public:

Strategy模式C++实现Strategy模式C++实现
virtual~Strategy(){}

Strategy模式C++实现

Strategy模式C++实现
virtualvoidAlgorithmInterface()=0;

Strategy模式C++实现}
;

Strategy模式C++实现

Strategy模式C++实现
classConcreateStrategyA

Strategy模式C++实现 :
publicStrategy

Strategy模式C++实现Strategy模式C++实现
{

Strategy模式C++实现
public:

Strategy模式C++实现Strategy模式C++实现
virtual~ConcreateStrategyA(){}

Strategy模式C++实现

Strategy模式C++实现
virtualvoidAlgorithmInterface();

Strategy模式C++实现}
;

Strategy模式C++实现

Strategy模式C++实现
#endif

Strategy模式C++实现



2)Strategy.cpp


Strategy模式C++实现Strategy模式C++实现
//*********

Strategy模式C++实现 created: 2006/08/06

Strategy模式C++实现 filename: Strategy.cpp

Strategy模式C++实现 author: 李创

Strategy模式C++实现
http://www.cppblog.com/converse/

Strategy模式C++实现

Strategy模式C++实现 purpose: Strategy模式的演示代码

Strategy模式C++实现
*********/

Strategy模式C++实现

Strategy模式C++实现#include
<iostream>

Strategy模式C++实现#include
"Strategy.h"

Strategy模式C++实现

Strategy模式C++实现Context::Context(Strategy
pStrategy)

Strategy模式C++实现 : m_pStrategy(pStrategy)

Strategy模式C++实现Strategy模式C++实现
{

Strategy模式C++实现}


Strategy模式C++实现

Strategy模式C++实现Context::
~Context()

Strategy模式C++实现Strategy模式C++实现
{

Strategy模式C++实现 delete m_pStrategy;

Strategy模式C++实现 m_pStrategy
=NULL;

Strategy模式C++实现}


Strategy模式C++实现

Strategy模式C++实现
voidContext::ContextInterface()

Strategy模式C++实现Strategy模式C++实现
{

Strategy模式C++实现
if(NULL!=m_pStrategy)

Strategy模式C++实现Strategy模式C++实现
{

Strategy模式C++实现 m_pStrategy
->AlgorithmInterface();

Strategy模式C++实现 }


Strategy模式C++实现}


Strategy模式C++实现

Strategy模式C++实现
voidConcreateStrategyA::AlgorithmInterface()

Strategy模式C++实现Strategy模式C++实现
{

Strategy模式C++实现 std::cout
<<"AlgorithmInterface Implemented by ConcreateStrategyA\n";

Strategy模式C++实现}


Strategy模式C++实现



3)Main.cpp


Strategy模式C++实现Strategy模式C++实现
//
*********

Strategy模式C++实现 created: 2006/08/06

Strategy模式C++实现 filename: Main.cpp

Strategy模式C++实现 author: 李创

Strategy模式C++实现http://www.cppblog.com/converse/

Strategy模式C++实现

Strategy模式C++实现 purpose: Strategy模式的测试代码

Strategy模式C++实现
**********/

Strategy模式C++实现

Strategy模式C++实现#include
"Strategy.h"

Strategy模式C++实现

Strategy模式C++实现
intmain()

Strategy模式C++实现Strategy模式C++实现
{

Strategy模式C++实现 Strategy
pStrategy=newConcreateStrategyA();

Strategy模式C++实现 Context
pContext=newContext(pStrategy);

Strategy模式C++实现

Strategy模式C++实现 pContext
->ContextInterface();

Strategy模式C++实现

Strategy模式C++实现 delete pContext;

Strategy模式C++实现

Strategy模式C++实现
return0;

Strategy模式C++实现}


原文链接: https://www.cnblogs.com/weiqubo/archive/2011/01/09/1931442.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/19862

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 下午9:12
下一篇 2023年2月7日 下午9:12

相关推荐