Skip to content

Commit 4c90cc9

Browse files
committed
责任链模式
1 parent 745cd62 commit 4c90cc9

File tree

5 files changed

+74
-0
lines changed

5 files changed

+74
-0
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
packagecom.anxpp.designpattern.chainofresponsibility;
2+
//处理者
3+
publicinterfaceHandler{
4+
inthandleRequest(intn);
5+
voidsetNextHandler(Handlernext);
6+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
packagecom.anxpp.designpattern.chainofresponsibility;
2+
//第一个具体处理者,处理小于0的
3+
publicclassHandler1implementsHandler{
4+
privateHandlernext;
5+
@Override
6+
publicinthandleRequest(intn){
7+
if(n<0) return -n;
8+
else{
9+
if(next==null)
10+
thrownewNullPointerException("next 不能为空");
11+
returnnext.handleRequest(n);
12+
}
13+
}
14+
@Override
15+
publicvoidsetNextHandler(Handlernext){
16+
this.next = next;
17+
}
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
packagecom.anxpp.designpattern.chainofresponsibility;
2+
//第二个具体处理者,处理>=0但小于10的
3+
publicclassHandler2implementsHandler{
4+
privateHandlernext;
5+
@Override
6+
publicinthandleRequest(intn){
7+
if(n<10) returnn*n;
8+
else{
9+
if(next==null)
10+
thrownewNullPointerException("next 不能为空");
11+
returnnext.handleRequest(n);
12+
}
13+
}
14+
@Override
15+
publicvoidsetNextHandler(Handlernext){
16+
this.next = next;
17+
}
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
packagecom.anxpp.designpattern.chainofresponsibility;
2+
//第三个具体处理者,处理>=0但小于10的
3+
publicclassHandler3implementsHandler{
4+
privateHandlernext;
5+
@Override
6+
publicinthandleRequest(intn){
7+
if(n<=Integer.MAX_VALUE) returnn;
8+
else{
9+
if(next==null)
10+
thrownewNullPointerException("next 不能为空");
11+
returnnext.handleRequest(n);
12+
}
13+
}
14+
@Override
15+
publicvoidsetNextHandler(Handlernext){
16+
this.next = next;
17+
}
18+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
packagecom.anxpp.designpattern.chainofresponsibility;
2+
publicclassTestUse{
3+
publicstaticvoidmain(Stringargs[]){
4+
Handlerh1,h2,h3;
5+
h1 = newHandler1();
6+
h2 = newHandler2();
7+
h3 = newHandler3();
8+
h1.setNextHandler(h2);
9+
h2.setNextHandler(h3);
10+
System.out.println(h1.handleRequest(-1));
11+
System.out.println(h1.handleRequest(5));
12+
System.out.println(h1.handleRequest(9999));
13+
}
14+
}

0 commit comments

Comments
(0)