设计模式——责任链模式

来源:互联网 发布:rap编曲知乎 编辑:程序博客网 时间:2024/06/05 14:31
责任链(Chain of Responsibility)模式:将要处理请求的对象连成一条链,让请求沿着这条链传递,直到有一个对象处理它为止。



Handler:定义一个处理请求的接口,实现后继链;
ConcreteHandler:处理它所负责的请求,保存它的后继者,如果不能处理请求,则转发给后继者;
Client:向链上的具体处理者(Concretehandler)对象提交请求。

适用性:
(1)有多个对象可以处理同一个请求;
(2)在不明确指定接受者的情况下,向多个对象中的一个提交请求;
(3)可处理一个请求的对象集合应该动态指定;

优点:
(1)降低耦合度;
(2)增强了给对象指派职责的灵活性;

缺点:
(1)性能问题,每个请求都从链头开始,如果链比较长,性能消耗大;
(2)如果链条比较长,会造成调试不方便;
(3)不保证请求一定被接受。

实现:
(1)可以在Handler中设置最大链条数;
(2)后继者可以使用新的链接,也可以使用已有链接;
(3)当业务逻辑越来越多时,责任链模式可以作为补救模式来使用;
0 0