《模板方法模式》PPT課件.ppt_第1頁
《模板方法模式》PPT課件.ppt_第2頁
《模板方法模式》PPT課件.ppt_第3頁
《模板方法模式》PPT課件.ppt_第4頁
《模板方法模式》PPT課件.ppt_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第6章,模板方法模式,本章教學(xué)內(nèi)容,模板方法模式 模式動機(jī)與定義 模式結(jié)構(gòu)與分析 模式實(shí)例與解析 模式效果與應(yīng)用,操作流程包含步驟!,模板方法模式,模式動機(jī),模板方法模式,模式動機(jī) 模板方法模式是基于繼承的代碼復(fù)用基本技術(shù),模板方法模式的結(jié)構(gòu)和用法也是面向?qū)ο笤O(shè)計(jì)的核心之一。在模板方法模式中,可以將相同的代碼放在父類中,而將不同的方法實(shí)現(xiàn)放在不同的子類中。 在模板方法模式中,我們需要準(zhǔn)備一個抽象類,將部分邏輯以具體方法以及具體構(gòu)造函數(shù)的形式實(shí)現(xiàn),然后聲明一些抽象方法來讓子類實(shí)現(xiàn)剩余的邏輯。不同的子類可以以不同的方式實(shí)現(xiàn)這些抽象方法,從而對剩余的邏輯有不同的實(shí)現(xiàn),這就是模板方法模式的用意。模板方

2、法模式體現(xiàn)了面向?qū)ο蟮闹T多重要思想,是一種使用頻率較高的模式。,模板方法模式,模式定義 模板方法模式(Template Method Pattern):定義一個操作中算法的骨架,而將一些步驟延遲到子類中,模板方法使得子類可以不改變一個算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟。,模板方法模式,模式定義 Template Method Pattern: Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses red

3、efine certain steps of an algorithm without changing the algorithms structure. Frequency of use: medium,模板方法模式,模式結(jié)構(gòu),模板方法模式,模式結(jié)構(gòu) 模板方法模式包含如下角色: AbstractClass: 抽象類 ConcreteClass: 具體子類,模板方法模式,模式分析 模板方法模式是一種類的行為型模式,在它的結(jié)構(gòu)圖中只有類之間的繼承關(guān)系,沒有對象關(guān)聯(lián)關(guān)系。 在模板方法模式的使用過程中,要求開發(fā)抽象類和開發(fā)具體子類的設(shè)計(jì)師之間進(jìn)行協(xié)作。一個設(shè)計(jì)師負(fù)責(zé)給出一個算法的輪廓和骨架,另一些

4、設(shè)計(jì)師則負(fù)責(zé)給出這個算法的各個邏輯步驟。實(shí)現(xiàn)這些具體邏輯步驟的方法稱為基本方法(Primitive Method),而將這些基本法方法匯總起來的方法稱為模板方法(Template Method),模板方法模式的名字從此而來。,模板方法模式,模式分析 模板方法:一個模板方法是定義在抽象類中的、把基本操作方法組合在一起形成一個總算法或一個總行為的方法。 基本方法:基本方法是實(shí)現(xiàn)算法各個步驟的方法,是模板方法的組成部分。 抽象方法(Abstract Method) 具體方法(Concrete Method) 鉤子方法(Hook Method):“掛鉤”方法和空方法,模板方法模式,模式分析 鉤子方法(

5、Hook Method),模板方法模式,模式分析 典型的抽象類代碼如下所示:,模板方法模式,模式分析 典型的具體子類代碼如下所示:,模板方法模式,模式分析 在模板方法模式中,由于面向?qū)ο蟮亩鄳B(tài)性,子類對象在運(yùn)行時將覆蓋父類對象,子類中定義的方法也將覆蓋父類中定義的方法,因此程序在運(yùn)行時,具體子類的基本方法將覆蓋父類中定義的基本方法,子類的鉤子方法也將覆蓋父類的鉤子方法,從而可以通過在子類中實(shí)現(xiàn)的鉤子方法對父類方法的執(zhí)行進(jìn)行約束,實(shí)現(xiàn)子類對父類行為的反向控制。,模板方法模式,模板方法模式實(shí)例與解析 實(shí)例一:銀行業(yè)務(wù)辦理流程 在銀行辦理業(yè)務(wù)時,一般都包含幾個基本步驟,首先需要取號排隊(duì),然后辦理具體

6、業(yè)務(wù),最后需要對銀行工作人員進(jìn)行評分。無論具體業(yè)務(wù)是取款、存款還是轉(zhuǎn)賬,其基本流程都一樣?,F(xiàn)使用模板方法模式模擬銀行業(yè)務(wù)辦理流程。,模板方法模式,模板方法模式實(shí)例與解析 實(shí)例一:銀行業(yè)務(wù)辦理流程,模板方法模式,模板方法模式實(shí)例與解析 實(shí)例二:計(jì)算存款利息 假設(shè)系統(tǒng)需要支持兩種存款賬號,即貨幣市場(Money Market)賬號和定期存款(Certificate of Deposite)賬號。這兩種賬號的存款利息是不同的,因此,在計(jì)算一個存戶的存款利息額時,必須區(qū)分兩種不同的賬號類型。 這個系統(tǒng)的總行為應(yīng)當(dāng)是計(jì)算出利息,這也就決定了作為一個模板方法模式的頂級邏輯應(yīng)當(dāng)是利息計(jì)算。由于利息計(jì)算涉及到

7、兩個步驟:一個基本方法給出賬號種類,另一個基本方法給出利息百分比。這兩個基本方法構(gòu)成具體邏輯,因?yàn)橘~號的類型不同,所以具體邏輯會有所不同。 顯然,系統(tǒng)需要一個抽象角色給出頂級行為的實(shí)現(xiàn),而將兩個作為細(xì)節(jié)步驟的基本方法留給具體子類實(shí)現(xiàn)。由于需要考慮的賬號有兩種:一是貨幣市場賬號,二是定期存款賬號。系統(tǒng)的類結(jié)構(gòu)如下圖所示。,模板方法模式,模板方法模式實(shí)例與解析 實(shí)例二:計(jì)算存款利息,模板方法模式,模板方法模式實(shí)例與解析 實(shí)例三:數(shù)據(jù)庫操作模板 對數(shù)據(jù)庫的操作一般包括連接、打開、使用、關(guān)閉等步驟,在數(shù)據(jù)庫操作模板類中我們定義了connDB()、openDB()、useDB()、closeDB()四個

8、方法分別對應(yīng)這四個步驟。對于不同類型的數(shù)據(jù)庫(如SQL Server和Oracle),其操作步驟都一致,只是連接數(shù)據(jù)庫connDB()方法有所區(qū)別,現(xiàn)使用模板方法模式對其進(jìn)行設(shè)計(jì)。,模板方法模式,模板方法模式實(shí)例與解析 實(shí)例三:數(shù)據(jù)庫操作模板,模板方法模式,模式優(yōu)缺點(diǎn) 模板方法模式的優(yōu)點(diǎn) 模板方法模式在一個類中形式化地定義算法,而由它的子類實(shí)現(xiàn)細(xì)節(jié)的處理。 模板方法模式是一種代碼復(fù)用的基本技術(shù)。,模板方法模式,模式優(yōu)缺點(diǎn) 模板方法模式的缺點(diǎn) 每個不同的實(shí)現(xiàn)都需要定義一個子類,這會導(dǎo)致類的個數(shù)增加,系統(tǒng)更加龐大,設(shè)計(jì)也更加抽象,但是更加符合“單一職責(zé)原則”,使得類的內(nèi)聚性得以提高。,模板方法模式

9、,模式適用環(huán)境 在以下情況下可以使用模板方法模式: 一次性實(shí)現(xiàn)一個算法的不變的部分,并將可變的行為留給子類來實(shí)現(xiàn)。 各子類中公共的行為應(yīng)被提取出來并集中到一個公共父類中以避免代碼重復(fù)。 對一些復(fù)雜的算法進(jìn)行分割,將其算法中固定不變的部分設(shè)計(jì)為模板方法和父類具體方法,而一些可以改變的細(xì)節(jié)由其子類來實(shí)現(xiàn)。 控制子類的擴(kuò)展。,本章小結(jié),在模板方法模式中,定義一個操作中算法的骨架,而將一些步驟延遲到子類中,模板方法使得子類可以不改變一個算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟。模板方法是一種類行為型模式。 模板方法模式包含兩個角色:在抽象類中定義一系列基本操作,這些基本操作可以是具體的,也可以是抽象的

10、,同時,在抽象類中實(shí)現(xiàn)了一個模板方法,用于定義一個算法的骨架;具體子類是抽象類的子類,用于實(shí)現(xiàn)在父類中定義的抽象基本操作以完成子類特定算法的步驟,也可以覆蓋在父類中實(shí)現(xiàn)的具體基本操作。 在模板方法模式中,方法可以分為模板方法和基本方法,其中基本方法又可以分為抽象方法、具體方法和鉤子方法,鉤子方法根據(jù)其特點(diǎn)又分為空方法和與實(shí)現(xiàn)算法步驟的基本方法“掛鉤”的方法。,本章小結(jié),模板方法模式的優(yōu)點(diǎn)在于在子類定義詳細(xì)的處理算法時不會改變算法的結(jié)構(gòu),實(shí)現(xiàn)了代碼的復(fù)用,通過對子類的擴(kuò)展可以增加新的行為,符合“開閉原則”;其缺點(diǎn)在于需要為每個不同的實(shí)現(xiàn)都定義一個子類,這會導(dǎo)致類的個數(shù)增加,系統(tǒng)更加龐大,設(shè)計(jì)也更加抽象 模板方

溫馨提示

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

評論

0/150

提交評論