设计模式19:职责链模式【行为型】

来源:互联网 发布:深入浅出学java 编辑:程序博客网 时间:2024/05/20 23:36
#include <iostream>using namespace std;//struct IManager{public:IManager(IManager *pHighLevelManager) : m_pHighLevelManager(pHighLevelManager) { }virtual ~IManager() { }virtual void dealWithRequest(int num) = 0;protected:IManager *m_pHighLevelManager;};class CCommonManager : public IManager{public:CCommonManager(IManager *pHighLevelManager) : IManager(pHighLevelManager) { }virtual ~CCommonManager() { }virtual void dealWithRequest(int num) {if(num <= 500){cout<<"common manager deal with request."<<endl;}else{m_pHighLevelManager->dealWithRequest(num);}}};class CMajorManager : public IManager{public:CMajorManager(IManager *pHighLevelManager) : IManager(pHighLevelManager) { }virtual ~CMajorManager() { }virtual void dealWithRequest(int num){if(num <= 1000){cout<<"major manager deal with request."<<endl;}else{m_pHighLevelManager->dealWithRequest(num);}}};class CTopManager : public IManager{public:CTopManager(IManager *pHighLevelManager) : IManager(pHighLevelManager) { }virtual ~CTopManager() { }virtual void dealWithRequest(int num){cout<<"top manager deal with request."<<endl;}};//void main(){CTopManager topManager(NULL);CMajorManager majorManager(&topManager);CCommonManager commonManager(&majorManager);commonManager.dealWithRequest(300);commonManager.dealWithRequest(800);commonManager.dealWithRequest(3000);}

原创粉丝点击