国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 輕松掌握java責任鏈模式

輕松掌握java責任鏈模式

2020-06-19 11:18斷了聯系 JAVA教程

這篇文章主要幫助大家輕松掌握java責任鏈模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下

定義:責任鏈模式(Chain of Responsibility Pattern)為請求創建了一個接收者對象的鏈。這種模式給予請求的類型,對請求的發送者和接收者進行解耦。這種類型的設計模式屬于行為型模式。在這種模式中,通常每個接收者都包含對另一個接收者的引用。如果一個對象不能處理該請求,那么它會把相同的請求傳給下一個接收者,依此類推。

特點:1、降低耦合度。它將請求的發送者和接收者解耦。

             2、簡化了對象。使得對象不需要知道鏈的結構。

             3、增強給對象指派職責的靈活性。通過改變鏈內的成員或者調動它們的次序,允許動態地新增或者刪除責任。

             4、增加新的請求處理類很方便。

企業級開發和常用框架中的應用:spring,struts的攔截器,servlet的過濾器

具體實例:

 

java" id="highlighter_51199">
?
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/**
 *這里以公司請假舉例:
 *1、某人請假(事件)
 *2、項目組長審批:小于三天可以審批,大于三天請示上級
 *3、部門主管審批:小于十天可以審批,大于十天請示上級
 *4、總經理審批 :小于30天可以審批,大于30天不批準
 */
public class Demo {
 
 public static void main(String[] args) {
 Event event = new Event("程序員", 32, "回老家探親");
 Leader a = new GroupLeader("張三");
 Leader b = new Manager("李四");
 Leader c = new GeneralManager("王五");
 
 //指定責任鏈模式
 a.setNextLeader(b);
 b.setNextLeader(c);
 
 a.handler(event);
 }
}
 
/**
 * 事件對象,責任鏈中的具體處理事件
 * 該實例中即為請假這件事兒
 */
class Event{
 private String name;
 private int days;
 private String reason;
 public Event(String name, int days, String reason) {
 super();
 this.name = name;
 this.days = days;
 this.reason = reason;
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public int getDays() {
 return days;
 }
 public void setDays(int days) {
 this.days = days;
 }
 public String getReason() {
 return reason;
 }
 public void setReason(String reason) {
 this.reason = reason;
 }
}
 
/**
 * 抽象責任鏈對象,后面的所有實際責任鏈對象繼承自該對象
 */
abstract class Leader{
 private String name;
 protected Leader nextLeader;//責任鏈中的下一個責任對象,這是讓責任鏈持續下去的基礎
 public Leader(String name) {
 super();
 this.name = name;
 }
 public void setNextLeader(Leader nextLeader) {
 this.nextLeader = nextLeader;
 }
 
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 protected abstract void handler(Event event);
}
 
/**
 * 請假流程中的第一個對象,組長
 */
class GroupLeader extends Leader{
 
 public GroupLeader(String name) {
 super(name);
 }
 
 protected void handler(Event event) {
 if(event.getDays() < 3){
 System.out.println("--------------------請假條--------------------");
 System.out.print("| 請假人:"+event.getName()+" | ");
 System.out.println("請假天數:"+event.getDays()+"天"+" |");
 System.out.println("| 請假原因:"+event.getReason() + " |");
 System.out.println("審批人:"+this.getName()+"(組長),通過!");
 System.out.println();
 }else{
 System.out.println(this.getName()+"(主管),沒有權限!");
 this.nextLeader.handler(event);
 }
 }
}
 
/**
 * 請假流程中的第二個對象,部門主管
 */
class Manager extends Leader{
 
 public Manager(String name) {
 super(name);
 }
 
 protected void handler(Event event) {
 if(event.getDays() < 10){
 System.out.println("--------------------請假條--------------------");
 System.out.print("| 請假人:"+event.getName()+" | ");
 System.out.println("請假天數:"+event.getDays()+"天"+" |");
 System.out.println("| 請假原因:"+event.getReason() + " |");
 System.out.println("審批人:"+this.getName()+"(主管),請假通過!");
 System.out.println();
 }else{
 System.out.println(this.getName()+"(總經理),沒有權限!");
 this.nextLeader.handler(event);
 }
 }
}
 
/**
 * 請假流程中的第三個對象,總經理
 */
class GeneralManager extends Leader{
 
 public GeneralManager(String name) {
 super(name);
 }
 
 protected void handler(Event event) {
 if(event.getDays() < 30){
 System.out.println("--------------------請假條--------------------");
 System.out.print("| 請假人:"+event.getName()+" | ");
 System.out.println("請假天數:"+event.getDays()+"天"+" |");
 System.out.println("| 請假原因:"+event.getReason() + " |");
 System.out.println("審批人:"+this.getName()+"(總經理)");
 System.out.println();
 }else{
 System.out.println("--------------------請假條--------------------");
 System.out.print("| 請假人:"+event.getName()+" | ");
 System.out.println("請假天數:"+event.getDays()+"天"+" |");
 System.out.println("| 請假原因:"+event.getReason() + " |");
 System.out.println("審批人:"+this.getName()+"(總經理),請假人不通過!");
 System.out.println();
 }
 }
}

責任鏈模式主要用于流程控制這一類的開發,相比較于單純用if-else模式,在代碼修改和整合上有更高的效率,更利于代碼維護。而且,需要增加責任鏈中的對象時,需要在再實現一個具體的責任鏈類,然后創建責任對象,并維護責任鏈關系就行,不需要更大的開銷,而且在實際設計中,我們很多時候責任鏈的維護都在配置文件中進行,這樣我們將節省更多的開發時間。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中文字幕一区二区三区精彩视频 | 日韩视频专区 | 性色av一区二区三区红粉影视 | 国产黄色在线观看 | 亚洲成人av免费观看 | 亚洲精品福利 | 在线干 | 欧美一级特黄aaaaaa大片在线观看 | 99久色| www.福利视频 | 日韩婷婷 | 成人一区二区在线 | 午夜在线电影 | 精品国产一区二区在线 | 三及毛片 | 国产精品一区二区三区在线 | 在线观看日韩精品 | 黄频免费在线观看 | 性色综合 | 免费在线看污网站 | 欧美一级片毛片免费观看视频 | 久久综合导航 | 五月婷婷在线观看视频 | h片在线| 国产成人在线看 | 日日搞夜夜操 | 91精品国产综合久久香蕉的用户体验 | 国产欧美日韩专区 | 视频一区二区三区中文字幕 | 亚洲人天堂 | 自拍视频在线 | 一本大道久久精品 | 福利社午夜影院 | 久久久久久久久国产 | 一二区视频 | 国产精品免费久久久久久久久久中文 | 91精品区| 亚洲午夜在线 | 欧美精品不卡 | 夜夜天天 | 中文字幕在线观看视频地址二 |