今天我來全面總結一下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):炒菜的步驟
步驟2:建立具體模板(concrete class),即」手撕包菜「和」蒜蓉炒菜心「的具體步驟public abstract class abstract class
//定義結構裡哪些方法是所有過程都是一樣的可復用的,哪些是需要子類進行實現的
//第一步:倒油是一樣的,所以直接實現
void pouroil()
//第二步:熱油是一樣的,所以直接實現
void heatoil()
//第三步:倒蔬菜是不一樣的(乙個下包菜,乙個是下菜心)
//所以宣告為抽象方法,具體由子類實現
abstract void pourvegetable();
//第四步:倒調味料是不一樣的(乙個下辣椒,乙個是下蒜蓉)
//所以宣告為抽象方法,具體由子類實現
abstract void poursauce();
//第五步:翻炒是一樣的,所以直接實現
void fry();
}
步驟3:客戶端呼叫-炒菜了//炒手撕包菜的類
public class concreteclass_baocai extend abstract class
@override
public void poursauce()
}//炒蒜蓉菜心的類
public class concreteclass_caixin extend abstract class
@override
public void poursauce()
}
結果輸出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 ...