17 第17章 職責(zé)鏈模式.ppt_第1頁
17 第17章 職責(zé)鏈模式.ppt_第2頁
17 第17章 職責(zé)鏈模式.ppt_第3頁
17 第17章 職責(zé)鏈模式.ppt_第4頁
17 第17章 職責(zé)鏈模式.ppt_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第17章,職責(zé)鏈模式,劉 偉 weiliu_,本章教學(xué)內(nèi)容,行為型模式 行為型模式概述 行為型模式簡介 職責(zé)鏈模式 模式動(dòng)機(jī)與定義 模式結(jié)構(gòu)與分析 模式實(shí)例與解析 模式效果與應(yīng)用 模式擴(kuò)展,行為型模式,行為型模式概述 行為型模式(Behavioral Pattern)是對在不同的對象之間劃分責(zé)任和算法的抽象化。 行為型模式不僅僅關(guān)注類和對象的結(jié)構(gòu),而且重點(diǎn)關(guān)注它們之間的相互作用。 通過行為型模式,可以更加清晰地劃分類與對象的職責(zé),并研究系統(tǒng)在運(yùn)行時(shí)實(shí)例對象之間的交互。在系統(tǒng)運(yùn)行時(shí),對象并不是孤立的,它們可以通過相互通信與協(xié)作完成某些復(fù)雜功能,一個(gè)對象在運(yùn)行時(shí)也將影響到其他對象的運(yùn)行。,行為型模

2、式,行為型模式概述 行為型模式分為類行為型模式和對象行為型模式兩種: 類行為型模式:類的行為型模式使用繼承關(guān)系在幾個(gè)類之間分配行為,類行為型模式主要通過多態(tài)等方式來分配父類與子類的職責(zé)。 對象行為型模式:對象的行為型模式則使用對象的聚合關(guān)聯(lián)關(guān)系來分配行為,對象行為型模式主要是通過對象關(guān)聯(lián)等方式來分配兩個(gè)或多個(gè)類的職責(zé)。根據(jù)“合成復(fù)用原則”,系統(tǒng)中要盡量使用關(guān)聯(lián)關(guān)系來取代繼承關(guān)系,因此大部分行為型設(shè)計(jì)模式都屬于對象行為型設(shè)計(jì)模式。,行為型模式,行為型模式簡介 職責(zé)鏈模式(Chain of Responsibility) 命令模式(Command) 解釋器模式(Interpreter) 迭代器模式

3、(Iterator) 中介者模式(Mediator) 備忘錄模式(Memento) 觀察者模式(Observer) 狀態(tài)模式(State) 策略模式(Strategy) 模板方法模式(Template Method) 訪問者模式(Visitor),職責(zé)鏈模式,模式動(dòng)機(jī),職責(zé)鏈模式,模式動(dòng)機(jī) 職責(zé)鏈可以是一條直線、一個(gè)環(huán)或者一個(gè)樹形結(jié)構(gòu),最常見的職責(zé)鏈?zhǔn)侵本€型,即沿著一條單向的鏈來傳遞請求。 鏈上的每一個(gè)對象都是請求處理者,職責(zé)鏈模式可以將請求的處理者組織成一條鏈,并使請求沿著鏈傳遞,由鏈上的處理者對請求進(jìn)行相應(yīng)的處理,客戶端無須關(guān)心請求的處理細(xì)節(jié)以及請求的傳遞,只需將請求發(fā)送到鏈上即可,將請求

4、的發(fā)送者和請求的處理者解耦。這就是職責(zé)鏈模式的模式動(dòng)機(jī)。,職責(zé)鏈模式,模式定義 職責(zé)鏈模式(Chain of Responsibility Pattern):避免請求發(fā)送者與接收者耦合在一起,讓多個(gè)對象都有可能接收請求,將這些對象連接成一條鏈,并且沿著這條鏈傳遞請求,直到有對象處理它為止。由于英文翻譯的不同,職責(zé)鏈模式又稱為責(zé)任鏈模式,它是一種對象行為型模式。,職責(zé)鏈模式,模式定義 Chain of Responsibility Pattern: Avoid coupling the sender of a request to its receiver by giving more than

5、 one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles it. Frequency of use: medium low,職責(zé)鏈模式,模式結(jié)構(gòu),職責(zé)鏈模式,模式結(jié)構(gòu) 職責(zé)鏈模式包含如下角色: Handler: 抽象處理者 ConcreteHandler: 具體處理者 Client: 客戶類,職責(zé)鏈模式,模式分析 在職責(zé)鏈模式里,很多對象由每一個(gè)對象對其下家的引用而連接起來形成一條鏈。 請

6、求在這條鏈上傳遞,直到鏈上的某一個(gè)對象處理此請求為止。 發(fā)出這個(gè)請求的客戶端并不知道鏈上的哪一個(gè)對象最終處理這個(gè)請求,這使得系統(tǒng)可以在不影響客戶端的情況下動(dòng)態(tài)地重新組織鏈和分配責(zé)任。,職責(zé)鏈模式,模式分析 典型的抽象處理者代碼:,職責(zé)鏈模式,模式分析 典型的具體處理者代碼:,職責(zé)鏈模式,職責(zé)鏈模式實(shí)例與解析 實(shí)例:審批假條 某OA系統(tǒng)需要提供一個(gè)假條審批的模塊,如果員工請假天數(shù)小于3天,主任可以審批該假條;如果員工請假天數(shù)大于等于3天,小于10天,經(jīng)理可以審批;如果員工請假天數(shù)大于等于10天,小于30天,總經(jīng)理可以審批;如果超過30天,總經(jīng)理也不能審批,提示相應(yīng)的拒絕信息。,職責(zé)鏈模式,職責(zé)鏈

7、模式實(shí)例與解析 實(shí)例:審批假條,職責(zé)鏈模式,職責(zé)鏈模式實(shí)例與解析 實(shí)例:審批假條 參考代碼 (Chapter 17 CoRsample01),演示,職責(zé)鏈模式,模式優(yōu)缺點(diǎn) 職責(zé)鏈模式的優(yōu)點(diǎn) 降低耦合度 可簡化對象的相互連接 增強(qiáng)給對象指派職責(zé)的靈活性 增加新的請求處理類很方便,職責(zé)鏈模式,模式優(yōu)缺點(diǎn) 職責(zé)鏈模式的缺點(diǎn) 不能保證請求一定被接收。 系統(tǒng)性能將受到一定影響,而且在進(jìn)行代碼調(diào)試時(shí)不太方便;可能會(huì)造成循環(huán)調(diào)用。,職責(zé)鏈模式,模式適用環(huán)境 在以下情況下可以使用職責(zé)鏈模式: 有多個(gè)對象可以處理同一個(gè)請求,具體哪個(gè)對象處理該請求由運(yùn)行時(shí)刻自動(dòng)確定。 在不明確指定接收者的情況下,向多個(gè)對象中的一

8、個(gè)提交一個(gè)請求。 可動(dòng)態(tài)指定一組對象處理請求。,職責(zé)鏈模式,模式應(yīng)用 (1) Java中的異常處理機(jī)制,職責(zé)鏈模式,模式應(yīng)用 (2) 早期的Java AWT事件模型(JDK 1.0及更早) :事件浮升(Event Bubbling)機(jī)制。 JavaScript事件浮升機(jī)制:,職責(zé)鏈模式,模式擴(kuò)展 純與不純的職責(zé)鏈模式 一個(gè)純的職責(zé)鏈模式要求一個(gè)具體處理者對象只能在兩個(gè)行為中選擇一個(gè):一個(gè)是承擔(dān)責(zé)任,另一個(gè)是把責(zé)任推給下家。不允許出現(xiàn)某一個(gè)具體處理者對象在承擔(dān)了一部分責(zé)任后又將責(zé)任向下傳的情況。 在一個(gè)純的職責(zé)鏈模式里面,一個(gè)請求必須被某一個(gè)處理者對象所接收;在一個(gè)不純的職責(zé)鏈模式里面,一個(gè)請求

9、可以最終不被任何接收端對象所接收。,本章小結(jié),行為型模式是對在不同的對象之間劃分責(zé)任和算法的抽象化。行為型模式不僅僅關(guān)注類和對象的結(jié)構(gòu),而且重點(diǎn)關(guān)注它們之間的相互作用。通過行為型模式,可以更加清晰地劃分類與對象的職責(zé),并研究系統(tǒng)在運(yùn)行時(shí)實(shí)例對象之間的交互。行為型模式可以分為類行為型模式和對象行為型模式兩種。 職責(zé)鏈模式可以避免請求發(fā)送者與接收者耦合在一起,讓多個(gè)對象都有可能接收請求,將這些對象連接成一條鏈,并且沿著這條鏈傳遞請求,直到有對象處理它為止。它是一種對象行為型模式。 職責(zé)鏈模式包含兩個(gè)角色:抽象處理者定義了一個(gè)處理請求的接口;具體處理者是抽象處理者的子類,它可以處理用戶請求。,本章小結(jié),在職責(zé)鏈模式里,很多對象由每一個(gè)對象對其下家的引用而連接起來形成一條鏈。請求在這個(gè)鏈上傳遞,直到鏈上的某一個(gè)對象決定處理此請求。發(fā)出這個(gè)請求的客戶端并不知道鏈上的哪一個(gè)對象最終處理這個(gè)請求,這使得系統(tǒng)可以在不影響客戶端的情況下動(dòng)態(tài)地重新組織鏈和分配責(zé)任。 職責(zé)鏈模式的主要優(yōu)點(diǎn)在于可以降低系統(tǒng)的耦合度,簡化對象的相互連接,同時(shí)增強(qiáng)給對象指派職責(zé)的靈活性,增加新的請求處理類也很方便;其主要缺點(diǎn)在于不能保證請求一定被接收,且對于比較長的職

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論