一、概念
使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止 注意:一个请求极可能到了链的末端都得不到处理,或因为没有正确配置而得不到处理
二、代码示例
public abstract class Handler {
protected Handler handler;
public void setHandler(Handler handler) {
this.handler = handler;
}
public abstract void handleRequest(int request);
}
public class MyHandler1 extends Handler {
@Override
public void handleRequest(int request) {
if (request >= 0 && request < 10) {
System.out.println(this.getClass().getName() + "处理请求");
} else {
handler.handleRequest(request);
}
}
}
public class MyHandler2 extends Handler {
@Override
public void handleRequest(int request) {
if (request >= 10 && request < 20) {
System.out.println(this.getClass().getName() + "处理请求");
} else {
handler.handleRequest(request);
}
}
}
public class MyHandler3 extends Handler {
@Override
public void handleRequest(int request) {
if (request >= 20 && request < 30) {
System.out.println(this.getClass().getName() + "处理请求");
} else {
handler.handleRequest(request);
}
}
}
public class RunMain {
public static void main(String[] args) {
MyHandler1 h1 = new MyHandler1();
MyHandler2 h2 = new MyHandler2();
MyHandler3 h3 = new MyHandler3();
h1.setHandler(h2);
h2.setHandler(h3);
int[] requests = {5, 10, 15, 25};
for (int request : requests) {
h1.handleRequest(request);
}
}
}