需求分析:
你把今天你向經理申請,經理沒權利
,然後向總監上報
,總監也沒有許可權
,向總經理上報的事
,寫成**看看
,不一定是加薪
,也有可能是請假申請
.public
classrequestelseelseelse
if(request.gettype()=="加薪"&&request.getnumber()<=500)else
if(request.gettype()=="加薪"&&request.getnumber()>500)else
if(request.gettype()=="加薪"&&request.getnumber()<=500)else
if(request.gettype()=="加薪"&&request.getnumber()>500) {
system.out
.println(name+": "+request.getcontent()+" 數量"+request.getnumber()+"再說吧");
public
classdemo {
public
static
voidmain(string args) {
commonmanager
jingli=newcommonmanager("經理");
majordomo
zongjian=newmajordomo("總監");
generalmanager
zongjingli=newgeneralmanager("總經理");
//設定上級,完全可以根據需求來更改設定
jingli.setsuperior(zongjian);
zongjian.setsuperior(zongjingli);
request
request=newrequest();
request.settype("加薪");
request.setcontent("小菜請求加薪");
request.setnumber(1000);
//客戶端的請求都是由經理發起,但實際誰來決策由具體管理者來處理,客戶端並不知道
request
request2=newrequest();
request2.settype("請假");
request2.setcontent("小菜請假");
request2.setnumber(3);
//客戶端的請求都是由經理發起,但實際誰來決策由具體管理者來處理,客戶端並不知道
職責鏈模式:
使多個物件都有機會處理請求,從而避免請求的傳送者和接受者的耦合關係
.將這個物件連城一條鏈
,並沿著這條鏈傳遞請求
,直到有乙個物件處理它為止
職責鏈模式的好處:
①請求者不管哪個物件來處理,反正該請求會被處理
;這就使得接受者和傳送者都沒有對方明確資訊
,且鏈中的物件自己也並不知道鏈的結構
.結果是職責鏈可簡化物件的相互連線
,它們僅僅需要保持乙個指向其後繼者的引用
,而不需要保持它所有的候選接受者的引用
,這也就大大降低了耦合度
②由於是在客戶端來定義鏈的結構,也就是說
,我可以隨時增加和修改處理乙個請求的結構
,增加了給物件指派職責的靈活性
.但是也要當心
,乙個請求極有可能到了鏈的末端都得不到處理
,或者因為沒有正確配置而得不到處理
,所以需要事先考慮全面
.(這就跟現實中寄信一樣
,因為位址不對
,最終也無法送達)
③解決了原來大量的分支判斷造成的難維護和靈活性差的問題
注意:①你需要事先給每個具體的管理者設定他的上司是哪個類,也就是設定後繼者
②需要在每個具體管理者處理請求時,做出判斷
,是可以處理這個請求
,還是必須推卸責任
,轉移給後繼者處理
.
java職責鏈模式
職責鏈模式 為了避免請求的傳送者和接收者之間的耦合關係,使多個接受物件都有機會處理請求。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。通俗一點說就是,當客戶提交乙個請求時,從第乙個物件開始,鏈中收到請求的物件要麼親自處理它,要麼 給鏈中的下乙個候選者。提交請求的物件並不知道...
JAVA職責鏈模式
通過本文將學習到 table of contents前言 1 職責鏈模式的概念 2 職責鏈的uml圖 3 職責鏈的實現 4 指責鏈的優缺點 5 職責鏈的使用場景 6 總結 今天寫了個小指令碼,感覺還挺有意思的!寫程式就是要寫點自己覺得好玩的東西麼。不然,寫出來都沒有一點成就感。還有今天慶祝wj小姐姐...
java設計模式 職責鏈模式
職責鏈的本質 分離職責,動態組合 樣例 定義職責物件的介面 public abstract class handler 處理聚餐費用的申請 param user 申請人 param fee 申請的費用 return public abstract string handlerfeerequest s...