概述
责任链模式属于对象行为型模式。其核心思想是将多个处理对象串联成一条链,请求沿着这条链传递,直到链上的某个对象决定处理它。客户端在发出请求时,无需知道最终由谁处理,这使得系统能够动态调整职责分配而不影响调用方。
意图与结构
该模式的主要目的是解耦请求的发送者与接收者。通过构建一个处理链,请求会在链上流转,直到找到合适的处理节点。在实际场景中,请求可能会经过多次流转,直到被完全处理或到达链尾。
责任链模式主要包含三个角色:
- Handler(抽象处理者):定义处理请求的接口,并持有后继者的引用。
- ConcreteHandler(具体处理者):实现具体的处理逻辑。如果它能处理该请求则执行,否则将请求传递给后继者。
- Client(客户端):负责构建责任链,并向链首提交请求。
代码实现
下面是一个基于 Java 的实现示例,展示了如何组装和处理请求。
抽象处理者
public abstract class Handler {
protected Handler successor;
public abstract void handleRequest();
public Handler getSuccessor() {
return successor;
}
/**
* 设置后继的责任对象
*/
public void setSuccessor(Handler successor) {
this.successor = successor;
}
}
具体处理者
public class ConcreteHandler extends Handler {
@Override
public void handleRequest() {
if (getSuccessor() != null) {
System.out.println("放过请求");
getSuccessor().handleRequest();
} {
System.out.println();
}
}
}


