(七)軟體設計模式 職責鏈模式

2021-09-24 02:32:17 字數 804 閱讀 4410

職責鏈是為請求建立了乙個接收者物件的鏈。每個接收者都包含對另乙個接收者的引用,如果乙個物件不能處理該請求,那麼它會把相同的請求傳給下乙個接收者,依此類推。

例如:學生想請假,院長只能批

2天假,校長可以批

7天假。

學生聯絡院長,院長聯絡校長,學生不用知道校長的****,也能請假,降低了學生與校長的耦合度

請求:

學生請假

職責鏈:學生

=>

院長=>

校長使用者只需將請求傳送到職責鏈

降低耦合度:物件之間只負責傳送請求,無需過多了解

增加擴充套件性:可新增處理物件,比如增加班主任請一天假

增加靈活性:可動態改變物件,比如,校長沒空換成副校長,不會影響系統功能

責任明確化:每個類只負責增加的工作,就好像院長只請兩天,多或者少他都不管

不能保證每個請求一定被處理:你不知道最大可以批幾天,請半個月,就沒法批假

長職責鏈會影響系統

增加客戶端複雜性

多個物件可以處理乙個請求

可指定一組物件處理請求

不清楚處理者,像多個處理者傳送請求

純職責鏈模式:乙個請求必須被某處理者全部接受,負責推給下家,比如請假

不純職責鏈模式:乙個請求可以由多個處理者負責,乙個負責一部分請求,比如裝水,乙個杯子裝一點,直到全部水裝起來

設計模式 職責鏈模式

2008年08月17日 星期日 下午 04 28 using system using system.collections.generic using system.text public officer officer o public abstract void deal action a c...

設計模式 職責鏈模式

1 request.h ifndef request h define request h include include using namespace std class request 請求類定義 endif request h 2 manager.h ifndef manager h def...

設計模式 職責鏈模式

今天跟大家分享下設計模式中的職責鏈模式。不知道大家在學習職責鏈模式的時候是否感覺困難。我剛開始學的時候就被整暈了。呵呵,進入正題。職責鏈模式是物件行為型模式中比較有特點的設計模式了,的確有意思,它可以像資料結構中煉表一樣傳遞。其實生活中好多的行為方式都體現了職責鏈模式,我們初期學習者可以把職責鏈模式...