第15章:职责链模式-请求的链式处理
定义:
职责链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止
结构:
代码实现:
//抽象处理者
abstract class Handler {
//维持对下家的引用
protected Handler successor;
public void setSuccessor(Handler successor) {
this.successor = successor;
}
public abstract void handleRequest(String request);
}
class ConcreteHandler extends Handler {
public void handleRequest(String request) {
if (请求满足条件) {
//处理请求
} else {
this.successor.handleRequest(request); //转发请求
}
}
}
应用实例:
//采购单
class PurchaseRequest {
private int amount; //金额
public int getAmount() {
return amount;
}
}
//采购单处理类
class PurchaseRequestHandler {
//递交采购单给主任
public void sendRequestToDirector(PurchaseRequest request) {
if (request.getAmount() < 50000) {
//主任可审批该采购单
this.handleByDirector(request);
} else if (request.getAmount() < 100000) {
//副董事长可审批该采购单
this.handleByVicePresident(request);
} else if (request.getAmount() < 500000) {
//董事长可审批该采购单
this.handleByPresident(request);
} else {
//董事会可审批该采购单
this.handleByCongress(request);
}
}
//主任审批采购单
public void handleByDirector(PurchaseRequest request) {
//代码省略
}
//副董事长审批采购单
public void handleByVicePresident(PurchaseRequest request) {
//代码省略
}
//董事长审批采购单
public vo