設計模式 8 模板模式

2021-10-10 06:55:41 字數 1883 閱讀 5153

今天我來全面總結一下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 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計模式屬於行為型模式。首先需要一定抽象的定義,沒有具體的實現,但是在抽象類的行為中,子類去程序這個抽象類,重寫抽象方法,實現不...