今天我來全面總結一下android開發中最常用的設計模式 - 模板方法模式。
模板方法模式.jpg
1.1 定義
定義乙個模板結構,將具體內容延遲到子類去實現。
1.2 主要作用
在不改變模板結構的前提下在子類中重新定義模板中的內容。
模板方法模式是基於」繼承「的;1.3 解決的問題
2.1 uml類圖 & 組成
uml類圖
2.2 例項講解
接下來我用乙個例項來對模板方法模式進行更深一步的介紹。
a. 例項概況
b. 使用步驟
步驟1:建立抽象模板結構(abstract class):炒菜的步驟
public abstract class abstract class
//定義結構裡哪些方法是所有過程都是一樣的可復用的,哪些是需要子類進行實現的
//第一步:倒油是一樣的,所以直接實現
void pouroil()
//第二步:熱油是一樣的,所以直接實現
void heatoil()
//第三步:倒蔬菜是不一樣的(乙個下包菜,乙個是下菜心)
//所以宣告為抽象方法,具體由子類實現
abstract void pourvegetable();
//第四步:倒調味料是不一樣的(乙個下辣椒,乙個是下蒜蓉)
//所以宣告為抽象方法,具體由子類實現
abstract void poursauce();
//第五步:翻炒是一樣的,所以直接實現
void fry();
}
步驟2:建立具體模板(concrete class),即」手撕包菜「和」蒜蓉炒菜心「的具體步驟
//炒手撕包菜的類
public class concreteclass_baocai extend abstract class
@override
public void poursauce()
}//炒蒜蓉菜心的類
public class concreteclass_caixin extend abstract class
@override
public void poursauce()
}
**步驟3: **客戶端呼叫-炒菜了
public class template method
}
結果輸出
倒油
熱油下鍋的蔬菜是包菜
下鍋的醬料是辣椒
炒啊炒啊炒到熟
倒油熱油
下鍋的蔬菜是菜心
下鍋的醬料是蒜蓉
炒啊炒啊炒到熟
在全面解析完模板方法模式後,我來分析下其優缺點:
3.1 優點
3.2 缺點
引入了抽象類,每乙個不同的實現都需要乙個子類來實現,導致類的個數增加,從而增加了系統實現的複雜度。
本文主要對模板方法模式進行了全面介紹,接下來將介紹其他設計模式,感興趣的同學可以繼續關注本人運營的wechat public account
:
設計模式(8) 模板方法模式
1.定義 模板方法模式 在乙個方法中定義了乙個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法中的某些步驟。2.類圖及描述 圖 模板方法模式類圖 3.應用場景及優缺點 模板方法模式中的方法 模板方法 定義在abstractclass中,形成演算法...
HeadFirst 設計模式 8模板方法模式
模板方法模式 在乙個方法中定義乙個演算法的骨架,並將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法中的某些步驟。增加乙個hook 方法後 注意 此處的hook 鉤子 是一種被宣告在抽象類中的方法,但是只有空的或缺省的實現。hook 的存在可以讓子類能夠對演算法的...
模板設計模式 設計模式 模板方法模式
在模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計模式屬於行為型模式。首先需要一定抽象的定義,沒有具體的實現,但是在抽象類的行為中,子類去程序這個抽象類,重寫抽象方法,實現不...