**
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Request
{
public:
string m_strContent;
int m_nNumber;
};
class Manager
{
public:
Manager(string temp)
{
name = temp;
}
void SetSuccessor(Manager *temp)
{
manager = temp;
}
virtual void GetRequest(Request *request) = 0;
protected:
string name;
Manager *manager;
};
class CommomManager :public Manager
{
public:
CommomManager(string strTemp) :Manager(strTemp)
{
}
virtual void GetRequest(Request *request)
{
if (request->m_nNumber >= 0 && request->m_nNumber < 10)
{
cout << name << "done" << request->m_nNumber << "request" << endl;
}
else
{
manager->GetRequest(request);
}
}
};
class MajorDomo :public Manager
{
public:
MajorDomo(string name) :Manager(name){}
virtual void GetRequest(Request *request)
{
if (request->m_nNumber >= 10)
{
cout << name << "done" << request->m_nNumber << "request" << endl;
}
}
};
int main()
{
Manager *common = new CommomManager("张经理");
Manager *major = new MajorDomo("李总监");
common->SetSuccessor(major);
Request *req = new Request();
req->m_nNumber = 33;
common->GetRequest(req);
req->m_nNumber = 3;
common->GetRequest(req);
system("pause");
return 0;
}
**