模板方法模式(Template Method)

2021-08-26 05:12:01 字數 2753 閱讀 4350

今天我來全面總結一下android開發中最常用的設計模式 - 模板方法模式。

其他設計模式介紹1分鐘全面了解「設計模式」

單例模式(singleton) - 最易懂的設計模式解析

簡單工廠模式(******factorypattern)- 最易懂的設計模式解析

工廠方法模式(factory method)- 最易懂的設計模式解析

抽象工廠模式(abstract factory)- 最易懂的設計模式解析

策略模式(strategy pattern)- 最易懂的設計模式解析

介面卡模式(adapter pattern)- 最易懂的設計模式解析

**模式(proxy pattern)- 最易懂的設計模式解析

模板方法模式(template method) - 最易懂的設計模式解析

建造者模式(builder pattern)- 最易懂的設計模式解析

外觀模式(facade pattern) - 最易懂的設計模式解析

1.1 定義

定義乙個模板結構,將具體內容延遲到子類去實現。

1.2 主要作用

在不改變模板結構的前提下在子類中重新定義模板中的內容。

模板方法模式是基於」繼承「的;

1.3 解決的問題

2.1 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 缺點

引入了抽象類,每乙個不同的實現都需要乙個子類來實現,導致類的個數增加,從而增加了系統實現的複雜度。

本文主要對模板方法模式進行了全面介紹,接下來將介紹其他設計模式,有興趣可以繼續關注carson_ho的安卓開發筆記!!!!

單例模式(singleton) - 最易懂的設計模式解析

簡單工廠模式(******factorypattern)- 最易懂的設計模式解析

工廠方法模式(factory method)- 最易懂的設計模式解析

抽象工廠模式(abstract factory)- 最易懂的設計模式解析

策略模式(strategy pattern)- 最易懂的設計模式解析

介面卡模式(adapter pattern)- 最易懂的設計模式解析

**模式(proxy pattern)- 最易懂的設計模式解析

模板方法模式(template method) - 最易懂的設計模式解析

建造者模式(builder pattern)- 最易懂的設計模式解析

外觀模式(facade pattern) - 最易懂的設計模式解析

模板方法模式

有這樣乙個場景 乙個演算法或流程,它的步驟以及步驟之間的順序是固定的,但具體的某一步可能有不同的實現。對於這麼乙個場景,可以建立多個類,各個類實現不同的實現,但是這樣的缺點是 易錯 難改,易錯 應為步驟和順序是固定的,而且在每個類中都要寫一遍,程式設計師怎有心情不好的時候,就有可能把其中某一步給寫錯...

模板方法模式

模板方法模式 定義乙個演算法框架,將裡面的操作步驟推遲到子類中去執行,這樣使得子類不用改變框架,只需改變某些操作步驟方法 ifndef test h define test h include include using namespace std class test virtual test v...

模板方法模式

模板方法模式 在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法的某些步驟。還可以使用鉤子對可選部分進行判斷。include include using namespace std class caffeinebeverage ...