面试
责任链模式:将请求沿着处理者链进行传递,直到有一个处理者处理它为止。 使用场景:
1)前置的参数校验,将不同的校验规则拆分成不同的处理节点,依次进行校验。
2)多级流程审批,根据采购金额的大小,分配给不同级别的人员进行审批。
3)日志记录系统,将不同级别的日志记录器组织成一条链,当日志事件发生时,沿着链传递,直到找到合适的记录 器为止。

java
// 抽象处理器
abstract class Handler {
protected Handler next;
public Handler setNext(Handler next) {
this.next = next;
return next; // 返回next方便链式调用
}
public abstract void handle(int amount);
}
// 组长:500以内
class LeaderHandler extends Handler {
public void handle(int amount) {
if (amount <= 500) {
System.out.println("组长审批通过:" + amount);
} else if (next != null) {
next.handle(amount);
}
}
}
// 经理:500-2000
class ManagerHandler extends Handler {
public void handle(int amount) {
if (amount <= 2000) {
System.out.println("经理审批通过:" + amount);
} else if (next != null) {
next.handle(amount);
}
}
}
// 使用
Handler chain = new LeaderHandler();
chain.setNext(new ManagerHandler()).setNext(new DirectorHandler());
chain.handle(1500); // 经理审批通过:1500