简介
策略模式,定义了一个算法族,并且封装了每一个算法,使它们可以互相替换。策略模式让算法与使用它的客户端独立的变化。
UML类图
示例
策略模式比较常见。人总要学习,正如在开篇中所说,通过读可以,写效果更好,能够通过分享或者教会别人可能会更有效。
策略相关类,strategy.h
#ifndef STRATEGY_H
#define STRATEGY_H
#include <iostream>
using namespace std;
class CLearning
{
public:
virtual void Learn() = 0;
};
class CReading:public CLearning
{
public:
void Learn()
{
cout<<"Learn by Reading."<<endl;
}
};
class CWriting:public CLearning
{
void Learn()
{
cout<<"Learn by Writing."<<endl;
}
};
class CTeaching:public CLearning
{
void Learn()
{
cout<<"Learn by Teaching."<<endl;
}
};
class CLearningContext
{
public:
CLearningContext(CLearning* pLearning)
{
m_pLearning = pLearning;
}
void Learn()
{
m_pLearning->Learn();
}
private:
CLearning* m_pLearning;
};
#endif
客户端调用,main.cpp
#include "strategy.h"
#define SAFE_DELETE(p) if(p){delete (p); (p) = NULL;}
int main(int argc, char* argv[])
{
CWriting* pWriting = new CWriting;
CLearningContext* pContext = new CLearningContext(pWriting);
pContext->Learn();
SAFE_DELETE(pWriting);
SAFE_DELETE(pContext);
return 0;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。