什么是策略模式,用我个人的定义就是利用了面向对象的多态等特性,通过一个类来管理实体类的一种编程技巧。
这种模式在项目中是经常用到的。
通过建模大家可以清晰的看到这些类层次关系。下面就用代码来实现一下。
我使用的是VS2005的,大家可以根据需要修改部分代码。
#include "stdafx.h"
#include <iostream>
using namespace std;
class Strategy
{
public:
virtual void operate() = 0;
};
class FirstStrategy:public Strategy
{
virtual void operate();
};
void FirstStrategy::operate()
{
cout<<"FirstStrategy::operate()"<<endl;
}
class SecondStrategy:public Strategy
{
virtual void operate();
};
void SecondStrategy::operate()
{
cout<<"SecondStrategy::operate()"<<endl;
}
class Context
{
public:
Context(Strategy* stra);
~Context();
void Coperate();
private:
Strategy* m_stra;
};
Context::Context(Strategy* stra)
:m_stra(stra)
{
}
Context::~Context()
{
}
void Context::Coperate()
{
m_stra->operate();
}
int _tmain(int argc, _TCHAR* argv[])
{
Strategy* firstStra = new FirstStrategy;
Context* context ;
context =new Context(firstStra);
context->Coperate();
Strategy* secStra = new SecondStrategy;
context =new Context(secStra);
context->Coperate();
return 0;
}
输出结果为
今天的模式实现完成。
跟多文章欢迎访问:http://blog.csdn.net/wallwind