在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。
类型区分:纯责任链,不纯责任链
实例:Tomcat中的Filter和容器
责任链模式实例:
(1)Handler类是其他具体处理类A、B、D类的父类,提供抽象,公共代码。
(2)代码建立责任链A->B->C。(责任链末尾必须是默认处理类,也即switch中的default部分)
责任链模式的优缺点
优点:实现了请求者与处理者代码分离:发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。提高系统的灵活性和可扩展行。
缺点:每次都是从链头开始:这也正是链表的缺点。