版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
DesignPatterns模板方法模式河南理工大學大綱模板方法模式概述模板方法模式的結構與實現模板方法模式的應用實例鉤子方法的使用模板方法模式的優(yōu)缺點與適用環(huán)境插卡驗證業(yè)務處理(存款/取款/轉賬……)退卡模板方法模式概述請客吃飯示意圖模板方法模式概述分析請客吃飯:(1)點單
(2)吃東西(3)買單軟件開發(fā):某個方法的實現需要多個步驟(類似“請客”),其中有些步驟是固定的(類似“點單”和“買單”),而有些步驟并不固定,存在可變性(類似“吃東西”)模板方法模式:基本方法(“點單”、“吃東西”和“買單”)模板方法(“請客”)具體方法抽象方法模板方法模式概述模板方法模式的定義類行為型模式模板方法模式:定義一個操作中算法的框架,而將一些步驟延遲到子類中。模板方法模式使得子類不改變一個算法的結構即可重定義該算法的某些特定步驟。TemplateMethodPattern:Definetheskeletonofanalgorithminanoperation,deferringsomestepstosubclasses.TemplateMethodletssubclassesredefinecertainstepsofanalgorithmwithoutchangingthealgorithm'sstructure.模板方法模式概述模板方法模式的定義是一種基于繼承的代碼復用技術將一些復雜流程的實現步驟封裝在一系列基本方法中在抽象父類中提供一個稱之為模板方法的方法來定義這些基本方法的執(zhí)行次序,而通過其子類來覆蓋某些步驟,從而使得相同的算法框架可以有不同的執(zhí)行結果模板方法模式的結構與實現模板方法模式的結構模板方法模式的結構與實現模板方法模式的結構模板方法模式包含以下兩個角色:AbstractClass(抽象類)ConcreteClass(具體子類)模板方法模式的結構與實現模板方法模式的實現模板方法(TemplateMethod)基本方法(PrimitiveMethod)抽象方法(AbstractMethod)具體方法(ConcreteMethod)鉤子方法(HookMethod)
:“掛鉤”方法和空方法模板方法模式的結構與實現模板方法模式的實現鉤子方法(1)“掛鉤”方法:IsXXX(),返回類型為bool類型(2)空方法……//模板方法publicvoidTemplateMethod(){Open();Display();//通過鉤子方法來確定某步驟是否執(zhí)行if(IsPrint()){Print();}}//鉤子方法publicboolIsPrint(){returntrue;}……模板方法模式的結構與實現模板方法模式的實現抽象類典型代碼:abstractclassAbstractClass{//模板方法publicvoidTemplateMethod(){PrimitiveOperation1();PrimitiveOperation2();PrimitiveOperation3();}//基本方法—具體方法publicvoidPrimitiveOperation1(){//實現代碼}//基本方法—抽象方法
publicabstractvoidPrimitiveOperation2();//基本方法—鉤子方法publicvirtualvoidPrimitiveOperation3(){}}模板方法模式的結構與實現模板方法模式的實現具體子類典型代碼:classConcreteClass:AbstractClass{publicoverridevoidPrimitiveOperation2(){//實現代碼}publicoverridevoidPrimitiveOperation3(){//實現代碼}}模板方法模式的應用實例實例說明某軟件公司要為某銀行的業(yè)務支撐系統(tǒng)開發(fā)一個利息計算模塊,利息的計算流程如下:(1)系統(tǒng)根據賬號和密碼驗證用戶信息,如果用戶信息錯誤,則系統(tǒng)顯示出錯提示。(2)如果用戶信息正確,則根據用戶類型的不同使用不同的利息計算公式計算利息(如活期賬戶和定期賬戶具有不同的利息計算公式)。(3)系統(tǒng)顯示利息?,F使用模板方法模式設計該利息計算模塊。模板方法模式的應用實例實例類圖銀行利息計算模塊結構圖鉤子方法的使用實例某軟件公司要為銷售管理系統(tǒng)提供一個數據圖表顯示功能,該功能的實現包括以下幾個步驟:(1)從數據源獲取數據。(2)將數據轉換為XML格式。(3)以某種圖表方式顯示XML格式的數據。該功能支持多種數據源和多種圖表顯示方式,但所有的圖表顯示操作都基于XML格式的數據,因此可能需要對數據進行轉換,如果從數據源獲取的數據已經是XML數據,則無須轉換。鉤子方法的使用結構數據圖表顯示功能結構圖鉤子方法的使用實現//DataViewer.csusingSystem;namespaceTemplateMethodSample{abstractclassDataViewer{//抽象方法:獲取數據publicabstractvoidGetData();//具體方法:轉換數據publicvoidConvertData(){Console.WriteLine("將數據轉換為XML格式。");}//抽象方法:顯示數據publicabstractvoidDisplayData();//鉤子方法:判斷是否為XML格式的數據
publicvirtualboolIsNotXMLData(){returntrue;}//模板方法publicvoidProcess(){GetData();//如果不是XML格式的數據則進行數據轉換
if(IsNotXMLData()){ConvertData();}DisplayData();}}}模板方法模式模板方法模式實例與解析實例一:銀行業(yè)務辦理流程在銀行辦理業(yè)務時,一般都包含幾個基本步驟,首先需要取號排隊,然后辦理具體業(yè)務,最后需要對銀行工作人員進行評分。無論具體業(yè)務是取款、存款還是轉賬,其基本流程都一樣?,F使用模板方法模式模擬銀行業(yè)務辦理流程。模板方法模式模板方法模式實例與解析實例一:銀行業(yè)務辦理流程模板方法模式模板方法模式實例與解析實例二:數據庫操作模板對數據庫的操作一般包括連接、打開、使用、關閉等步驟,在數據庫操作模板類中我們定義了connDB()、openDB()、useDB()、closeDB()四個方法分別對應這四個步驟。對于不同類型的數據庫(如SQLServer和Oracle),其操作步驟都一致,只是連接數據庫connDB()方法有所區(qū)別,現使用模板方法模式對其進行設計。模板方法模式模板方法模式實例與解析實例二:數據庫操作模板模板方法模式的優(yōu)缺點與適用環(huán)境模式優(yōu)點在父類中形式化地定義一個算法,而由它的子類來實現細節(jié)的處理,在子類實現詳細的處理算法時并不會改變算法中步驟的執(zhí)行次序提取了類庫中的公共行為,將公共行為放在父類中,而通過其子類來實現不同的行為可實現一種反向控制結構,通過子類覆蓋父類的鉤子方法來決定某一特定步驟是否需要執(zhí)行更換和增加新的子類很方便,符合單一職責原則和開閉原則模板方法模式模式擴展關于繼承的討論模板方法模式鼓勵我們恰當使用繼承,此模式可以用來改寫一些擁有相同功能的相關類,將可復用的一般性的行為代碼移到父類里面,而將特殊化的行為代碼移到子類里面。這也進一步說明,雖然繼承復用存在一些問題,但是在某些情況下還是可以給開發(fā)人員帶來方便,模板方法模式就是體現繼承優(yōu)勢的模式之一。模板方法模式模式擴展好萊塢原則在模板方法模式中,子類不顯式調用父類的方法,而是通過覆蓋父類的方法來實現某些具體的業(yè)務邏輯,父類控制對子類的調用,這種機制被稱為好萊塢原則(HollywoodPrinciple),好萊塢原則的定義為:“不要給我們打電話,我們會給你打電話(Don‘tcallus,we’llcallyou)”。在模板方法模式中,好萊塢原則體現在:子類不需要調用父類,而通過父類來調用子類,將某些步驟的實現寫在子類中,由父類來控制整個過程。
模板方法模式模式擴展鉤子方法的使用鉤子方法的引入使得子類可以控制父類的行為。最簡單的鉤子方法就是空方法,也可以在鉤子方法中定義一個默認的實現,如果子類不覆蓋鉤子方法,則執(zhí)行父類的默認實現代碼。比較復雜一點的鉤子方法可以對其他方法進行約束,這種鉤子方法通常返回一個boolean類型,即返回true或false,用來判斷是否執(zhí)行某一個基本方法。模板方法模式的優(yōu)缺點與適用環(huán)境模式缺點需要為每一個基本方法的不同實現提供一個子類,如果
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 吉林藝術學院《素描造型人體訓練》2021-2022學年第一學期期末試卷
- 吉林藝術學院《短片寫作》2021-2022學年第一學期期末試卷
- 中藥材基地管理協(xié)議書范文
- 2024年大學黨建共建協(xié)議書模板
- 2024年大人簽離婚協(xié)議書模板
- 2024年大件物標書購買合同范本
- 奶茶店撤股協(xié)議書范文模板
- 2022年公務員多省聯考《申論》真題(四川縣鄉(xiāng)卷)及答案解析
- 吉林師范大學《歷史學科課程與教學論》2021-2022學年第一學期期末試卷
- 吉林師范大學《行書理論與技法III》2021-2022學年第一學期期末試卷
- (2024年)量子計算機課件(精)
- 糖尿病酮癥酸中毒的診斷和治療
- GB/T 19812.7-2024塑料節(jié)水灌溉器材第7部分:微灌用塑料閥門
- 世界工廠的中國特色新時期工人狀況的社會學鳥瞰
- 2023中國路跑賽事藍皮書
- 鄉(xiāng)鎮(zhèn)社會穩(wěn)定風險評估報告
- 2023年高考物理(江蘇卷)真題詳細解讀及評析
- 應用研究型人才培養(yǎng)方案設計
- 車輛司機安全教育培訓
- ecmo患者撤機后的護理
- GJB工藝設計依據
評論
0/150
提交評論