责任链模式定义

责任链模式(Iterator Pattern), 是行为型设计模式之一。这种模型结构有点类似现实生活中铁链,由一个个铁环首尾相接构成一条链,如果这种结构用在编程领域,则每个节点可以看做一个对象,每个对象有不同的处理逻辑,将一个请求从链的首端发出,沿着链的路径依次传递每个节点对象,直到有对象处理这个请求为止,我们将这样一种模式称为责任链模式。

责任链模式使用场景

  • 多个对象可以处理同一个请求,但具体由哪个对象处理则在运行时动态决定。
  • 在请求处理者不明确的情况下向对个对象中的一个提交一个请求。
  • 需要动态处理一组对象处理请求。


角色介绍

AbsHandler

抽象处理者角色,声明一个请求处理的方法,并在其中保持一个对下一个处理节点Handler对象的引用。

ConcreteHandler

具体处理者角色,对请求进行处理,如果不能处理则将该请求转发给下一个节点上的处理对象。

责任链中一个处理者对象,其中只有两个行为,一是处理请求,二是将请求转送给下一个节点,不允许某个处理者对象在处理了请求后又将请求转送给上一个节点的情况。对于一条责任链来说,一个请求最终只有两种情况,一是被某个处理对象所处理,另一个是所有对象均未对其处理,前一种情况称该责任链为纯的责任链,对于后一种情况称为不纯的责任链,实际应用中,多为不纯的责任链。