Skip to content

Commit 7159798

Browse files
author
Liu Yuning
committed
add chain of responsibility DP
1 parent 77270c1 commit 7159798

2 files changed

Lines changed: 84 additions & 0 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package designpattern.responsibilitychain;
2+
3+
/**
4+
* 向链上的具体处理者对象提交请求
5+
*
6+
* @author liu yuning
7+
*
8+
*/
9+
public class Client {
10+
public static void main(String[] args) {
11+
12+
Handler handlerA = new ConcreteHandlerA();
13+
Handler handlerB = new ConcreteHandlerB();
14+
Handler handlerC = new ConcreteHandlerC();
15+
16+
handlerA.setSuccessor(handlerB);
17+
handlerB.setSuccessor(handlerC);
18+
19+
int[] requests = { 2, 14, 5, 6, 8, 23, 12, 21 };
20+
21+
for (int i : requests) {
22+
handlerA.handleRequest(i);
23+
}
24+
}
25+
26+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package designpattern.responsibilitychain;
2+
3+
/**
4+
* 处理请求的接口
5+
*
6+
* @author liu yuning
7+
*
8+
*/
9+
public abstract class Handler {
10+
11+
protected Handler successor;
12+
13+
public void setSuccessor(Handler successor) {
14+
this.successor = successor;
15+
}
16+
17+
public abstract void handleRequest(int request);
18+
}
19+
20+
// 具体处理者类,处理它所负责的请求,可访问它的后继者,如果可处理该请求,则处理,否则转给它的后继者处理
21+
class ConcreteHandlerA extends Handler {
22+
23+
@Override
24+
public void handleRequest(int request) {
25+
if (request >= 0 && request <= 10) {
26+
System.out.println(this.getClass().getName() + "处理了请求" + request);
27+
} else if (successor != null) {
28+
successor.handleRequest(request);
29+
}
30+
}
31+
32+
}
33+
34+
class ConcreteHandlerB extends Handler {
35+
36+
@Override
37+
public void handleRequest(int request) {
38+
if (request > 10 && request <= 20) {
39+
System.out.println(this.getClass().getName() + "处理了请求" + request);
40+
} else if (successor != null) {
41+
successor.handleRequest(request);
42+
}
43+
}
44+
45+
}
46+
47+
class ConcreteHandlerC extends Handler {
48+
49+
@Override
50+
public void handleRequest(int request) {
51+
if (request > 20 && request <= 30) {
52+
System.out.println(this.getClass().getName() + "处理了请求" + request);
53+
} else if (successor != null) {
54+
successor.handleRequest(request);
55+
}
56+
}
57+
58+
}

0 commit comments

Comments
 (0)