設(shè)計模式-模板方法模式
模板方法模式(Template Method Pattern)又叫模板模式,在一個抽象類公開定義了執(zhí)行它的方法的模板.它的子類可以按需要重寫方法實現(xiàn),但調(diào)用將以抽象類中定義的方式進(jìn)行
簡單說,模板方法模式定義一個操作中的算法的骨架,而將一些步驟延遲到子類中,使得子類可以不改變一個算法的結(jié)構(gòu),就可以重定義該算法的某些特定步驟
這種類型的設(shè)計模式屬于行為型模式
案例
編寫制作豆?jié){的程序
制作豆?jié){的流程,選材→添加配料→浸泡→放到豆?jié){機(jī)打碎
通過添加不同的配料,可以制作出不同口味的豆?jié){
選材,浸泡和放到豆?jié){機(jī)打碎這幾個步驟對于制作每種口味的豆?jié){都是一樣的(如紅豆豆?jié){,花生豆?jié){)
鉤子方法
在模板方法模式的父類中,我們可以定義一個方法,它默認(rèn)不做任何事,子類可以視情況要不要覆蓋它,該方法稱為"鉤子"
比如,我們還希望制作純豆?jié){,不添加任何的配料,使用鉤子方法對前面的模板方法進(jìn)行改造
注意事項和細(xì)節(jié)
基本思想:算法只存在于一個地方,也就是在父類中,容易修改.需要修改算法時,只要修改父類的模板方法或者已經(jīng)實現(xiàn)的某些步驟,子類就會繼承這些修改
實現(xiàn)了最大化代碼復(fù)用.父類的模板方法和已實現(xiàn)的某些步驟會被子類繼承而直接使用
既統(tǒng)一了算法,也提供了很大的靈活性.父類的模板方法保證了算法的結(jié)構(gòu)保持不變,同時由子類提供部分步驟的實現(xiàn)
不足之處:每一個不同的實現(xiàn)都需要一個子類實現(xiàn),導(dǎo)致類的個數(shù)增加,使得系統(tǒng)更加龐大
一般模板方法都會加上final關(guān)鍵字,防止子類重寫模板方法
應(yīng)用場景:當(dāng)要完成某個過程,該過程要執(zhí)行一系列步驟,這一系列的步驟基本相同,但其個別步驟在實現(xiàn)時可能不同,通??紤]用模板方法模式進(jìn)行處理

