#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);
}
设计模式19:职责链模式【行为型】
最新推荐文章于 2024-05-29 19:30:00 发布