{C++ 基礎(chǔ)} {C++ 高級(jí)} {C#界面,C++核心算法} {設(shè)計(jì)模式} {C#基礎(chǔ)}
準(zhǔn)備一個(gè)抽象類,將部分邏輯以具體方法以及具體構(gòu)造子的形式實(shí)現(xiàn),然后聲明一些抽象方法來迫使子類實(shí)現(xiàn)剩余的邏輯。不同的子類可以以不同的方式實(shí)現(xiàn)這些抽象方法,從而對(duì)剩余的邏輯有不同的實(shí)現(xiàn)。這就是模版方法模式的用意。
很多人可能沒有想到,模版方法模式實(shí)際上是所有模式中最為常見的幾個(gè)模式之一,而且很多人可能使用過模版方法模式而沒有意識(shí)到自己已經(jīng)使用了這個(gè)模式。模版方法模式是基于繼承的代碼復(fù)用的基本技術(shù),模版方法模式的結(jié)構(gòu)和用法也是面向?qū)ο笤O(shè)計(jì)的核心。
模版方法模式需要開發(fā)抽象類和具體子類的設(shè)計(jì)師之間的協(xié)作。一個(gè)設(shè)計(jì)師負(fù)責(zé)給出一個(gè)算法的輪廓和骨架,另一些設(shè)計(jì)師則負(fù)責(zé)給出這個(gè)算法的各個(gè)邏輯步驟。代表這些具體邏輯步驟的方法稱做基本方法(primitive method);而將這些基本法方法總匯起來的方法叫做模版方法(template method),這個(gè)設(shè)計(jì)模式的名字就是從此而來。?模版方法模式中的方法
模版方法中的方法可以分為兩大類:模版方法(Template Method)和基本方法(Primitive Method)。
模版方法
一個(gè)模版方法是定義在抽象類中的,把基本操作方法組合在一起形成一個(gè)總算法或一個(gè)總行為的方法。這個(gè)模版方法一般會(huì)在抽象類中定義,并由子類不加以修改地完全繼承下來。
基本方法
基本方法又可以分為三種:抽象方法(Abstract Method)、具體方法(Concrete Method)和鉤子方法(Hook Method)。
抽象方法:一個(gè)抽象方法由抽象類聲明,由具體子類實(shí)現(xiàn)。在C#語(yǔ)言里一個(gè)抽象方法以abstract關(guān)鍵字標(biāo)示出來。
具體方法:一個(gè)具體方法由抽象類聲明并實(shí)現(xiàn),而子類并不實(shí)現(xiàn)或置換。在C#語(yǔ)言里面,一個(gè)具體方法沒有abstract關(guān)鍵字。
鉤子方法:一個(gè)鉤子方法由抽象類聲明并實(shí)現(xiàn),而子類會(huì)加以擴(kuò)展。通常抽象類給出的實(shí)現(xiàn)是一個(gè)空實(shí)現(xiàn),作為方法的默認(rèn)實(shí)現(xiàn)。(Visual FoxPro中項(xiàng)目向?qū)Ы⒌捻?xiàng)目會(huì)使用一個(gè)AppHook類實(shí)現(xiàn)監(jiān)視項(xiàng)目成員變化,調(diào)整系統(tǒng)結(jié)構(gòu)的工作。)鉤子方法的名字通常以do開始。
posted on 2006-01-03 16:04 夢(mèng)在天涯 閱讀(550) 評(píng)論(0) 編輯 收藏 引用 所屬分類: Design pattern