设计模式——策略模式(Strategy)

来源:互联网 发布:数据库 防黑客 编辑:程序博客网 时间:2024/06/15 00:34

定义好各个阶段的工作,然后按流程去走。

举一个例子:

文件操作有:打开,处理,关闭。

文件操作流程:打开——>处理——>关闭


CFileContext:操作的控制控制类

#include "IStrategy.h"class CFileContext{public:CFileContext(IStrategy* strategy);~CFileContext(void);void Operate();private:IStrategy *mp_strategy;};
CFileContext::CFileContext(IStrategy *strategy){mp_strategy = strategy;}CFileContext::~CFileContext(void){delete mp_strategy;}void CFileContext::Operate(){mp_strategy->Operate();}


IStrategy:各个操作的接口

#pragma onceclass IStrategy{public:IStrategy(void);virtual ~IStrategy(void);virtual void Operate() = 0;};
#include "IStrategy.h"IStrategy::IStrategy(void){}IStrategy::~IStrategy(void){}

CDealFileOpen,CDealFileWork,CDealFileClose

是对IStrategy的实现,分别实现打开,处理,关闭操作。

#pragma once#include "IStrategy.h"class CDealFileOpen : public IStrategy{public:CDealFileOpen(void);~CDealFileOpen(void);void Operate();};

<pre name="code" class="cpp">#pragma once#include "IStrategy.h"class CDealFileWork: public IStrategy{public:CDealFileWork(void);~CDealFileWork(void);void Operate();};

#pragma once#include "IStrategy.h"class CDealFileClose: public IStrategy{public:CDealFileClose(void);~CDealFileClose(void);void Operate();};

#include "DealFileOpen.h"#include <iostream>using std::cout;using std::endl;CDealFileOpen::CDealFileOpen(void){}CDealFileOpen::~CDealFileOpen(void){}void CDealFileOpen::Operate(){cout<<" Open File.\n "<<endl;}


程序运行结果:

 Open File.

Start to Work.

Close File.

	
				
		
原创粉丝点击