職責鏈是為請求建立了乙個接收者物件的鏈。每個接收者都包含對另乙個接收者的引用,如果乙個物件不能處理該請求,那麼它會把相同的請求傳給下乙個接收者,依此類推。
例如:學生想請假,院長只能批
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...
設計模式 職責鏈模式
今天跟大家分享下設計模式中的職責鏈模式。不知道大家在學習職責鏈模式的時候是否感覺困難。我剛開始學的時候就被整暈了。呵呵,進入正題。職責鏈模式是物件行為型模式中比較有特點的設計模式了,的確有意思,它可以像資料結構中煉表一樣傳遞。其實生活中好多的行為方式都體現了職責鏈模式,我們初期學習者可以把職責鏈模式...