設計模式 責任鏈

2022-07-30 05:09:12 字數 2315 閱讀 2592

mark:關於責任鏈demo。

職責鏈模式:使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理他為止。

類圖:

請假--審批**)

描述:請假這個事情,相信每個人都不陌生。

我們公司是個相對很寬鬆的公司。

在公司裡,如果你的請假時間小於0.5天,那麼只需要向專案經理打聲招呼就ok了。

如果超過了0.5天,但是還小於2天,那麼就要去找人事部處理,當然,這就要扣工資了。

如果超過了2天,你就需要去找總經理了,工資當然也玩完了。

那麼,對於我們來說,這個流程就是這樣的。

請求類。(包括請假時間和請假理由)

package

pattern;

/***

@author

_venom_

* @version */

public

class

request

public

string getreason()

public

void

setreason(string reason)

public

double

getday()

public

void setday(double

day)

}

請假處理人。pm hr manager 三個類。

首先:建立boss抽象類。

package

pattern;

/***

@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,hr,manager 繼承boss

pm類:

package

pattern;

/***

@author

_venom_

* @version */

public

class pm extends

boss

@override

public

boolean

passrequest(request request)

return

getsuccessor().passrequest(request);}}

hr類:

package

pattern;

/***

@author

_venom_

* @version */

public

class hr extends

boss

@override

public

boolean

passrequest(request request)

}

manager類:

package

pattern;

/***

@author

_venom_

* @version */

public

class manager extends

boss

@override

public

boolean

passrequest(request request)

}

測試類:

package

pattern;

/***

@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設計模式解析 責任鏈模式 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間發生耦合。此模式將這些物件連成一條鏈,從而沿著這條鏈傳遞請求,直到有乙個物件處理它為止。責任鏈主要思想 很多物件引用了同一型別的另乙個物件,形成了一條鏈。鏈中每個物件...