设计模式之责任链模式
责任链模式,使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象练成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。该模式很好理解,其UML图如下:
每个ConcreteHandler都有一定的请求处理能力,当自己处理不了的时候就把请求转移给自己的后继者。所以每个ConcreteHandler都有一个Handler的引用。示例代码如下:
// ChainofResponsibilityModel.h文件
#pragma once
#include <iostream>
class Handler
{
protected:
Handler * m_sucessor;
public:
void setSucessor(Handler * p)
{
m_sucessor = p;
}
virtual void processRequest(int n) = 0;
};
class ConcreteHandler_0 : public Handler
{
public:
void processRequest(int n)
{
if (n &