Appearance
责任链模式
意图
使多个对象都有机会处理请求,将这些对象连成一条链,并沿着链传递请求,直到有对象处理它为止。
类图
Java 示例
java
public class PurchaseRequest {
public final int amount;
public PurchaseRequest(int amount) { this.amount = amount; }
}
public abstract class Approver {
protected Approver next;
public Approver setNext(Approver n) { this.next = n; return n; }
public abstract void process(PurchaseRequest req);
}
public class Manager extends Approver {
public void process(PurchaseRequest req) {
if (req.amount <= 1000) System.out.println("Manager ok");
else if (next != null) next.process(req);
}
}
public class Director extends Approver {
public void process(PurchaseRequest req) {
if (req.amount <= 5000) System.out.println("Director ok");
else if (next != null) next.process(req);
}
}
// new Manager().setNext(new Director()).process(new PurchaseRequest(3000));Servlet Filter 链、Spring MVC HandlerInterceptor 链均为责任链。
下一节:命令模式