mark:關於責任鏈demo。
職責鏈模式:使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理他為止。
類圖:
請假--審批**)
描述:請假這個事情,相信每個人都不陌生。
我們公司是個相對很寬鬆的公司。
在公司裡,如果你的請假時間小於0.5天,那麼只需要向專案經理打聲招呼就ok了。
如果超過了0.5天,但是還小於2天,那麼就要去找人事部處理,當然,這就要扣工資了。
如果超過了2天,你就需要去找總經理了,工資當然也玩完了。
那麼,對於我們來說,這個流程就是這樣的。
請求類。(包括請假時間和請假理由)
package請假處理人。pm hr manager 三個類。pattern;
/***
@author
_venom_
* @version */
public
class
request
public
string getreason()
public
void
setreason(string reason)
public
double
getday()
public
void setday(double
day)
}
首先:建立boss抽象類。
packagepm,hr,manager 繼承bosspattern;
/***
@author
_venom_
* @version */
public
abstract
class
boss
public
abstract
boolean
passrequest(request request);
public
string getname()
public
void
setname(string name)
public
boss getsuccessor()
public
void
setsuccessor(boss successor)
}
pm類:
packagehr類:pattern;
/***
@author
_venom_
* @version */
public
class pm extends
boss
@override
public
boolean
passrequest(request request)
return
getsuccessor().passrequest(request);}}
packagemanager類:pattern;
/***
@author
_venom_
* @version */
public
class hr extends
boss
@override
public
boolean
passrequest(request request)
}
package測試類:pattern;
/***
@author
_venom_
* @version */
public
class manager extends
boss
@override
public
boolean
passrequest(request request)
}
packagepattern;
/***
@author
_venom_
* @version */
public
class
testclain
}
設計模式 責任鏈
使用情況描述 某人向銀行借錢 借1w一下一般櫃員就可以解決,借2w一下一般經理就能解決,如果借更多就需要主管才能解決。這就是乙個責任鏈,根據條件的不同,分別進行複雜的邏輯運算。if,switch都可以進行這樣的操作,但是需要在每一層進行一次複雜的操作。責任鏈模式是一種物件的行為模式。在責任鏈模式裡,...
責任鏈設計模式
責任鏈的應用場景 簡單使用責任鏈模式拆分 servlet api 中的過濾器 模擬servlet中的request物件 desc模擬 servlet 中的 request 物件 模擬servlet中的response物件 desc模擬 servlet 中的 response 物件 過濾器抽象層 de...
設計模式 責任鏈
引用 objective c程式設計之道 ios設計模式解析 責任鏈模式 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間發生耦合。此模式將這些物件連成一條鏈,從而沿著這條鏈傳遞請求,直到有乙個物件處理它為止。責任鏈主要思想 很多物件引用了同一型別的另乙個物件,形成了一條鏈。鏈中每個物件...