责任链模式

责任链模式

什么是责任链模式?

责任链模式(Chain of Responsibility)是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。

类图

责任链模式类图

Handler接口

1
2
3
4
5
6
7
8
public abstract class Handler {
protected Handler nextHandler;
public void setHandler(Handler nextHandler){
this.nextHandler = nextHandler;
}

public abstract void handle(int request);
}

ConcreteHandler实现类

1
2
3
4
5
6
7
8
9
10
public class ConcreteHandler1 extends Handler {
@Override
public void handle(int request) {
if (request<10){
System.out.println("handler1 receive:"+request);
}else {
nextHandler.handle(request);
}
}
}

Client调用类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Client {
public static void main(String[] args){
Handler handler1 = new ConcreteHandler1();
Handler handler2 = new ConcreteHandler2();
Handler handler3 = new ConcreteHandler3();

handler1.setHandler(handler2);
handler2.setHandler(handler3);

int[] n={1,23,4,5,6,12,15,16,18,21,25,32,36};

for (int i=0;i<n.length;i++){
handler1.handle(n[i]);
}

}
}