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+
package com.anxpp.designpattern.chainofresponsibility;
2+
//处理者
3+
public interface Handler {
4+
int handleRequest(int n);
5+
void setNextHandler(Handler next);
6+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.anxpp.designpattern.chainofresponsibility;
2+
//第一个具体处理者,处理小于0的
3+
public class Handler1 implements Handler {
4+
private Handler next;
5+
@Override
6+
public int handleRequest(int n) {
7+
if(n<0) return -n;
8+
else{
9+
if(next==null)
10+
throw new NullPointerException("next 不能为空");
11+
return next.handleRequest(n);
12+
}
13+
}
14+
@Override
15+
public void setNextHandler(Handler next) {
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+
package com.anxpp.designpattern.chainofresponsibility;
2+
//第二个具体处理者,处理>=0但小于10的
3+
public class Handler2 implements Handler {
4+
private Handler next;
5+
@Override
6+
public int handleRequest(int n) {
7+
if(n<10) return n*n;
8+
else{
9+
if(next==null)
10+
throw new NullPointerException("next 不能为空");
11+
return next.handleRequest(n);
12+
}
13+
}
14+
@Override
15+
public void setNextHandler(Handler next) {
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+
package com.anxpp.designpattern.chainofresponsibility;
2+
//第三个具体处理者,处理>=0但小于10的
3+
public class Handler3 implements Handler {
4+
private Handler next;
5+
@Override
6+
public int handleRequest(int n) {
7+
if(n<=Integer.MAX_VALUE) return n;
8+
else{
9+
if(next==null)
10+
throw new NullPointerException("next 不能为空");
11+
return next.handleRequest(n);
12+
}
13+
}
14+
@Override
15+
public void setNextHandler(Handler next) {
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+
package com.anxpp.designpattern.chainofresponsibility;
2+
public class TestUse {
3+
public static void main(String args[]){
4+
Handler h1,h2,h3;
5+
h1 = new Handler1();
6+
h2 = new Handler2();
7+
h3 = new Handler3();
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)