
今天我來全面總結一下Android開發中最常用的設計模式 - 模板方法模式。
其他設計模式介紹 1分鐘全面了解“設計模式” 單例模式(Singleton) - 最易懂的設計模式解析 簡單工廠模式(SimpleFactoryPattern)- 最易懂的設計模式解析 工廠方法模式(Factory Method)- 最易懂的設計模式解析 抽象工廠模式(Abstract Factory)- 最易懂的設計模式解析 策略模式(Strategy Pattern)- 最易懂的設計模式解析 適配器模式(Adapter Pattern)- 最易懂的設計模式解析 代理模式(PRoxy Pattern)- 最易懂的設計模式解析 模板方法模式(Template Method) - 最易懂的設計模式解析 建造者模式(Builder Pattern)- 最易懂的設計模式解析 外觀模式(Facade Pattern) - 最易懂的設計模式解析

定義一個模板結構,將具體內容延遲到子類去實現。
在不改變模板結構的前提下在子類中重新定義模板中的內容。
模板方法模式是基于”繼承“的;

接下來我用一個實例來對模板方法模式進行更深一步的介紹。 a. 實例概況
背景:小成希望學炒菜:手撕包菜 & 蒜蓉炒菜心沖突:兩道菜的炒菜步驟有的重復有的卻差異很大,記不住解決方案:利用代碼記錄下來b. 使用步驟 步驟1: 創建抽象模板結構(Abstract Class):炒菜的步驟
public abstract class Abstract Class { //模板方法,用來控制炒菜的流程 (炒菜的流程是一樣的-復用)//申明為final,不希望子類覆蓋這個方法,防止更改流程的執行順序 final void cookProcess(){ //第一步:倒油 this.pourOil(); //第二步:熱油 this.HeatOil(); //第三步:倒蔬菜 this.pourVegetable(); //第四步:倒調味料 this.pourSauce(); //第五步:翻炒 this.fry(); } //定義結構里哪些方法是所有過程都是一樣的可復用的,哪些是需要子類進行實現的//第一步:倒油是一樣的,所以直接實現void pourOil(){ System.out.println("倒油"); } //第二步:熱油是一樣的,所以直接實現 void HeatOil(){ System.out.println("熱油"); } //第三步:倒蔬菜是不一樣的(一個下包菜,一個是下菜心)//所以聲明為抽象方法,具體由子類實現 abstract void pourVegetable();//第四步:倒調味料是不一樣的(一個下辣椒,一個是下蒜蓉)//所以聲明為抽象方法,具體由子類實現 abstract void pourSauce();//第五步:翻炒是一樣的,所以直接實現 void fry();{ System.out.println("炒啊炒啊炒到熟啊"); } }步驟2: 創建具體模板(Concrete Class),即”手撕包菜“和”蒜蓉炒菜心“的具體步驟
//炒手撕包菜的類 public class ConcreteClass_BaoCai extend Abstract Class{ @Override public void pourVegetable(){ System.out.println(”下鍋的蔬菜是包菜“); } @Override public void pourSauce(){ System.out.println(”下鍋的醬料是辣椒“); } }//炒蒜蓉菜心的類 public class ConcreteClass_CaiXin extend Abstract Class{ @Override public void pourVegetable(){ System.out.println(”下鍋的蔬菜是菜心“); } @Override public void pourSauce(){ System.out.println(”下鍋的醬料是蒜蓉“); } }步驟3: 客戶端調用-炒菜了
public class Template Method{ public static void main(String[] args){//炒 - 手撕包菜 ConcreteClass_BaoCai BaoCai = new ConcreteClass_BaoCai(); BaoCai.cookProcess();//炒 - 蒜蓉菜心 ConcreteClass_ CaiXin = new ConcreteClass_CaiXin(); CaiXin.cookProcess(); }}結果輸出
倒油熱油下鍋的蔬菜是包菜下鍋的醬料是辣椒炒啊炒啊炒到熟倒油熱油下鍋的蔬菜是菜心下鍋的醬料是蒜蓉炒啊炒啊炒到熟在全面解析完模板方法模式后,我來分析下其優缺點:
引入了抽象類,每一個不同的實現都需要一個子類來實現,導致類的個數增加,從而增加了系統實現的復雜度。
本文主要對模板方法模式進行了全面介紹,接下來將介紹其他設計模式,有興趣可以繼續關注Carson_Ho的安卓開發筆記!!!!
相關文章閱讀 單例模式(Singleton) - 最易懂的設計模式解析 簡單工廠模式(SimpleFactoryPattern)- 最易懂的設計模式解析 工廠方法模式(Factory Method)- 最易懂的設計模式解析 抽象工廠模式(Abstract Factory)- 最易懂的設計模式解析 策略模式(Strategy Pattern)- 最易懂的設計模式解析 適配器模式(Adapter Pattern)- 最易懂的設計模式解析 代理模式(Proxy Pattern)- 最易懂的設計模式解析 模板方法模式(Template Method) - 最易懂的設計模式解析 建造者模式(Builder Pattern)- 最易懂的設計模式解析 外觀模式(Facade Pattern) - 最易懂的設計模式解析
新聞熱點
疑難解答