1 意图:多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。
将这些对象连成一条链,沿着这条链传递该请求,知道有一个对象处理它为止。
2 动机:要沿链请求,并保证接收者是隐式的,每个链上的对象都有一只的处理请求和访问链上后继者的接口。
3 适用性:
.有多个对象可以处理一个请求,哪个对象处理请求运行时刻自动确定。
.在不明确指定接收者的情况下,向多个对象中的一个提交请求。
.可处理一个请求的对象集合应被动态指定
4 参与者:
Handler:定义一个处理请求的接口,实现后继链(可选)
ConcreteHandler:处理它所负责的请求,可访问它的后继者。
如果可处理该请求,就处理之。否则将该请求转发给它的后继者。
Client:向链上的处理这对象提交请求
5 协作:
当客户提交一个请求时,请求沿链传递直至有一个ConcreteHandler对象负责处理它。
6 效果:
1)降低耦合度
2)增强给对象指派职责的灵活性
3)不保证被接受
7 实现:
1)实现后继者,两种办法:
. 定义新的链接
.使用已有的链接
2)连接后继者
3)表示请求
8 相关模式:
责任链与Composite一起使用