深入理解设计模式之:职责链模式(Chain of Responsibility Pattern)
一、什么是职责链模式?
职责链模式是一种行为型设计模式。它将请求的发送者和接收者解耦,让多个接收对象都有机会处理这个请求。将这些接收对象连成一条链,请求沿着链传递,直到有对象处理它为止。
核心思想:
请求发送者无需关心请求由谁处理,链上的每个节点都可以选择处理请求或将其传递给下一个节点。
二、应用场景
- Web 框架中的过滤器链、拦截器链(如 Spring MVC Filter、Servlet Filter)
- 日志处理链(不同级别日志处理器)
- 审批流程(如请假、报销等多级审批)
- 责任分级处理(如异常处理、权限校验)
三、模式结构
- Handler(抽象处理者):定义处理请求的接口,并持有下一个处理者的引用
- ConcreteHandler(具体处理者):实现处理逻辑,决定是否处理请求或传递给下一个处理者
- Client(客户端):创建链并发起请求
四、UML 类图
+------------------+
| Handler |<-------------------+
+------------------+ |
| next: Handler | |
| +setNext() | |
| +handleRequest() | |
+------------------+ |
/_\ |
| |
+---------------------+ +---------------------+
| ConcreteHandlerA | | ConcreteHandlerB |
+---------------------+ +---------------------+
| +handleRequest() | | +handleRequest() |
+---------------------+ +---------------------+
五、Java 实现代码示例
1. 抽象处理者
public abstract class Handler {
protected Handler next;
public void setNext(Handler next) {
this.next = next;
}
public abstract void handleRequest(String request);
}
2. 具体处理者
public