责任链模式

Posted by 石玉军 on 2018-07-26

责任链模式:很多对象由每一个对象对其下家的引用而连接起来行成的一条链。

其实责任链模式一直在我们的身边。某一天,董事长有个想法,他吩咐给了经理,经理吩咐给了组长,组长分配给了你我。这时候我们发现,我们没有下级了呀,咋办,那就干呗。

上方这个任务分配的过程就是责任链模式,一个事件会一直向下层传递,董事长并不关心是谁解决的这个问题,对他来说只要问题解决了就行。

1

Handle:抽象处理者,可理解为抽象的员工(经理组长普通程序员等都是继承了员工)
Handle:具体处理者:具体做事的人(具体某一个经理组长普通程序员等)
Client:客户端

来看一下代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public abstract class Handle {
protected Handle next;
public abstract void handleRequest();

public void setNext(Handle next){
this.next=next;
}
}

public class HandleImpl extends Handle {
@Override
public void handleRequest() {
if(next!=null){
System.out.println("调用下级处理");
next.handleRequest();
}else{
System.out.println("请求处理中。。。");
}
}
}

public class Client {
public static void main(String args[]){
Handle handle1=new HandleImpl();
Handle handle2=new HandleImpl();
Handle handle3=new HandleImpl();
handle1.setNext(handle2);
handle2.setNext(handle3);
handle1.handleRequest();
}
}

可以看到上方代码运行过程就像文章开始时我们所举得例子,只要它存在下级就会把请求交给下级去处理,这就是典型的责任链模式