什么是策略模式,用我个人的定义就是利用了面向对象的多态等特性,通过一个类来管理实体类的一种编程技巧。
这种模式在项目中是经常用到的。
通过建模大家可以清晰的看到这些类层次关系。下面就用代码来实现一下。
我使用的是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;
- }