#include <iostream>
#include <string>
using namespace std;
class Handler
{
public:
Handler() {}
Handler(const string& strName) : m_strName(strName) {}
void setHandler(Handler* pobjHandler)
{
m_pobjHandler = pobjHandler;
}
virtual void request(const int& request) = 0;
protected:
Handler* m_pobjHandler;
string m_strName;
};
class ConcreteHandlerOne : public Handler
{
public:
ConcreteHandlerOne() {}
ConcreteHandlerOne(const string& strName) : Handler(strName) {}
virtual void request(const int& request) override
{
if (request < 100)
{
cout << m_strName << " handle request less than 100" << endl;
}
else
{
m_pobjHandler->request(request);
}
}
};
class ConcreteHandlerTwo : public Handler
{
public:
ConcreteHandlerTwo() {}
ConcreteHandlerTwo(const string& strName) : Handler(strName) {}
virtual void request(const int& request) override
{
cout << m_strName << " handle request more than 100" << endl;
}
};
int main()
{
Handler* pobjHandlerOne = new ConcreteHandlerOne("行");
Handler* pobjHandlerTwo = new ConcreteHandlerTwo("彳亍");
pobjHandlerOne->setHandler(pobjHandlerTwo);
pobjHandlerOne->request(200);
return 0;
}
总结:有点类似于链表,只要设置好后继,会把请求找到一个合适的处理。脑洞开一下,可以照着链表找前驱,职责链也可以做到。
07-22
07-22
07-22
07-22