作用:
定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换.本模式使得算法可独立于使用它的客户而变化.
UML结构图:
实现:
1)Strategy.h
/*********
created: 2006/08/06
filename: Strategy.h
author: 李创
http://www.cppblog.com/converse/
purpose: Strategy模式的演示代码
**********/
#ifndef STRATEGY_H
#defineSTRATEGY_H
classStrategy;
classContext
{
public:
Context(StrategypStrategy);
~Context();
voidContextInterface();
private:
Strategym_pStrategy;
};
classStrategy
{
public:
virtual~Strategy(){}
virtualvoidAlgorithmInterface()=0;
};
classConcreateStrategyA
:publicStrategy
{
public:
virtual~ConcreateStrategyA(){}
virtualvoidAlgorithmInterface();
};
#endif
2)Strategy.cpp
/*********
created: 2006/08/06
filename: Strategy.cpp
author: 李创
http://www.cppblog.com/converse/
purpose: Strategy模式的演示代码
*********/
#include<iostream>
#include"Strategy.h"
Context::Context(StrategypStrategy)
: m_pStrategy(pStrategy)
{
}
Context::~Context()
{
delete m_pStrategy;
m_pStrategy=NULL;
}
voidContext::ContextInterface()
{
if(NULL!=m_pStrategy)
{
m_pStrategy->AlgorithmInterface();
}
}
voidConcreateStrategyA::AlgorithmInterface()
{
std::cout<<"AlgorithmInterface Implemented by ConcreateStrategyA\n";
}
3)Main.cpp
/*********
created: 2006/08/06
filename: Main.cpp
author: 李创
http://www.cppblog.com/converse/
purpose: Strategy模式的测试代码
**********/
#include"Strategy.h"
intmain()
{
StrategypStrategy=newConcreateStrategyA();
ContextpContext=newContext(pStrategy);
pContext->ContextInterface();
delete pContext;
return0;
}
原文链接: https://www.cnblogs.com/weiqubo/archive/2011/01/09/1931442.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/19862
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!