一句话总结
请求链式处理
内容
本质是解耦请求和处理,请求处理者只处理自己感兴趣的请求,若不感兴趣则直接转发给下一个结点。
场景
审批流程;过五关,斩六将; 数据校验;
类图
![](https://img.haomeiwen.com/i5359801/5c7253448dddb61f.png)
代码示例
public abstract class Handler {
protected Handler nextHandler;
public void setNextHanlder(Handler successor) {
this.nextHandler = successor;
}
public abstract void handleRequest(String request);
}
public class ConcreteHandlerA extends Handler {
public void handleRequest(String request) {
if ("requestA".equals(request)) {
System.out.println(this.getClass().getSimpleName() + "deal with request: " + request);
return;
}
if (this.nextHandler != null) {
this.nextHandler.handleRequest(request);
}
}
}
public class ConcreteHandlerB extends Handler {
public void handleRequest(String request) {
if ("requestB".equals(request)) {
System.out.println(this.getClass().getSimpleName() + "deal with request: " + request);
return;
}
if (this.nextHandler != null) {
this.nextHandler.handleRequest(request);
}
}
}
public class Test {
public static void main(String[] args) {
Handler handlerA = new ConcreteHandlerA();
Handler handlerB = new ConcreteHandlerB();
handlerA.setNextHanlder(handlerB);
handlerA.handleRequest("requestB");
}
}
运行结果
![](https://img.haomeiwen.com/i5359801/b2ef77ef2b51156d.png)
网友评论