责任链

1 意图:多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。

           将这些对象连成一条链,沿着这条链传递该请求,知道有一个对象处理它为止。

2 动机:要沿链请求,并保证接收者是隐式的,每个链上的对象都有一只的处理请求和访问链上后继者的接口。

3 适用性:

   .有多个对象可以处理一个请求,哪个对象处理请求运行时刻自动确定。

   .在不明确指定接收者的情况下,向多个对象中的一个提交请求。

   .可处理一个请求的对象集合应被动态指定

4 参与者:

   Handler:定义一个处理请求的接口,实现后继链(可选)

   ConcreteHandler:处理它所负责的请求,可访问它的后继者。

                            如果可处理该请求,就处理之。否则将该请求转发给它的后继者。

   Client:向链上的处理这对象提交请求

5 协作:

   当客户提交一个请求时,请求沿链传递直至有一个ConcreteHandler对象负责处理它。

6 效果:

  1)降低耦合度

  2)增强给对象指派职责的灵活性

  3)不保证被接受

7 实现:

  1)实现后继者,两种办法:

      . 定义新的链接

      .使用已有的链接

  2)连接后继者

  3)表示请求

8 相关模式:

   责任链与Composite一起使用

原文地址:https://www.cnblogs.com/criticalsection/p/5689457.html