责任链模式(ResponsibilityChain)

1

定义

  责任链模式(ResponsibilityChain):属于行为型模式,让多个任务的处理者串成一个链(链表),依次处理某个请求,直到某个处理者最终处理完成。

代码实战

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
abstract class Leader {
protected Leader leader;

public void setLeader(Leader leader) {
this.leader = leader;
}

public abstract void approval(int dayNum);
}

class LeaderIII extends Leader {
@Override
public void approval(int dayNum) {
if (dayNum <= 2) {
System.out.println("leaderIII can approval 2 days");
return;
}
if (leader != null) {
leader.approval(dayNum);
}
}
}

class LeaderII extends Leader {
@Override
public void approval(int dayNum) {
if (dayNum <= 7) {
System.out.println("leaderII can approval 7 days");
return;
}
if (leader != null) {
leader.approval(dayNum);
}
}
}

class LeaderI extends Leader {
@Override
public void approval(int dayNum) {
if (dayNum <= 30) {
System.out.println("leaderI can approval 30 days");
return;
}
if (leader != null) {
leader.approval(dayNum);
}
}
}


class Test {
public static void main(String[] args) {
LeaderI leaderI = new LeaderI();
LeaderII leaderII = new LeaderII();
LeaderIII leaderIII = new LeaderIII();

leaderIII.setLeader(leaderII);
leaderII.setLeader(leaderI);

leaderIII.approval(1);
leaderIII.approval(5);
leaderIII.approval(10);
}
}

类图

1

特点

  责任链模式的特点是,创建一个抽象的类,其中有一个指向本类的成员变量next,表示自己的下一个处理者,并提供一个抽象的方法doSomething,让多个具体处理者重写该方法。当某个中间处理者发现自己无法处理时,会调用下一个处理者next的doSomething。

总结

  责任链模式使用的场景不是特别多,但是公司的审批制度,就是一个明显的责任链式的模式。当三级主管无法审批时,会上传到二级主管审批,二级主管不能审批的问题,会上传到一级主管审批。

-------------本文结束感谢您的阅读-------------
0%