定义
使多个对象都有机会处理请求,从而避免发送者和接收者之间的耦合关系。核心做法是将这些对象连成一条链,使请求沿着链传递,直到有对象处理请求为止。
通用类图如下:

所谓责任链,通俗地讲就是把请求传给一个对象,它能处理则处理,不能处理则传给链条中下一个对象,整个过程颇似递归。
优点
最显著的优点是将请求和处理分开,请求者也不需要关心由谁处理、如何处理。
缺点
- 性能问题,当链条比较长时尤其明显
- 调试不方便
注意事项
使用责任链条模式需要特别注意链条节点的数量,避免出现超长链。一般做法是设置节点数量阈值,超过则不允许建立节点。
参考:
设计模式之禅