Skip to content

Commit 8f3c71c

Browse files
authored
责任链模式
责任链模式
1 parent 06ab7ab commit 8f3c71c

File tree

7 files changed

+102
-0
lines changed

7 files changed

+102
-0
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.java.design.responsibility;
2+
3+
/**
4+
* 加薪申请
5+
*
6+
* @author Administrator
7+
*
8+
*/
9+
public class AddMoneyRequest implements Request {
10+
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.java.design.responsibility;
2+
3+
/**
4+
* 离职申请
5+
*
6+
* @author Administrator
7+
*
8+
*/
9+
public class DimissionRequest implements Request {
10+
11+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.java.design.responsibility;
2+
3+
public class HRRequestHandle implements RequestHandler {
4+
5+
@Override
6+
public void handleRequest(Request request) {
7+
8+
if (request instanceof DimissionRequest) {
9+
System.out.println("要离职 人事审批 ...");
10+
}
11+
12+
System.out.println("请求完成 ...");
13+
}
14+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.java.design.responsibility;
2+
3+
public class PMRequestHandle implements RequestHandler {
4+
5+
RequestHandler requestHandler;
6+
7+
public PMRequestHandle(RequestHandler requestHandler) {
8+
9+
this.requestHandler = requestHandler;
10+
}
11+
12+
@Override
13+
public void handleRequest(Request request) {
14+
15+
if (request instanceof AddMoneyRequest) {
16+
17+
System.out.println("要加薪,项目经理审批 ...");
18+
} else {
19+
20+
requestHandler.handleRequest(request);
21+
}
22+
23+
}
24+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.java.design.responsibility;
2+
3+
public interface Request {
4+
5+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.java.design.responsibility;
2+
3+
public interface RequestHandler {
4+
5+
void handleRequest(Request request);
6+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.java.design.responsibility;
2+
3+
/**
4+
* 责任链模式 -----> 是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,
5+
* 直到链上的某一个对象决定处理此请求
6+
* 发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任
7+
* Tomcat中的Filter就是使用了责任链模式
8+
* 创建一个Filter除了要在web.xml文件中做相应配置外,还需要实现javax.servlet.Filter接口。
9+
*
10+
* @author Administrator
11+
*
12+
*/
13+
public class ResponsibilityPattern {
14+
15+
public static void main(String[] args) {
16+
17+
RequestHandler hr = new HRRequestHandle();
18+
RequestHandler pm = new PMRequestHandle(hr);
19+
20+
Request request = new DimissionRequest();
21+
hr.handleRequest(request);
22+
23+
request = new AddMoneyRequest();
24+
pm.handleRequest(request);
25+
26+
request = new DimissionRequest();
27+
pm.handleRequest(request);
28+
29+
}
30+
31+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy