java設計模式 模板模式

2021-08-17 05:49:55 字數 1491 閱讀 4378

1.1 定義

1.2 主要作用

1.3 解決的問題

實現了反向控制 

通過乙個父類呼叫其子類的操作,通過對子類的具體實現擴充套件不同的行為,實現了反向控制 & 符合「開閉原則」

2.1 uml類圖 & 組成

2.2 例項講解

衝突:兩道菜的炒菜步驟有的重複有的卻差異很大,記不住

解決方案:利用**記錄下來

步驟1: 建立抽象模板結構(abstract class):炒菜的步驟

public

abstract

class abstract class

//定義結構裡哪些方法是所有過程都是一樣的可復用的,哪些是需要子類進行實現的

//第一步:倒油是一樣的,所以直接實現

void pouroil()

//第二步:熱油是一樣的,所以直接實現

void heatoil()

//第三步:倒蔬菜是不一樣的(乙個下包菜,乙個是下菜心)

//所以宣告為抽象方法,具體由子類實現

abstract

void pourvegetable();

//第四步:倒調味料是不一樣的(乙個下辣椒,乙個是下蒜蓉)

//所以宣告為抽象方法,具體由子類實現

abstract

void poursauce();

//第五步:翻炒是一樣的,所以直接實現

void fry();

}

//炒手撕包菜的類

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

各子類中公共的行為應被提取出來並集中到乙個公共父類中以避免**重複;

控制子類的擴充套件。

Java 設計模式 模板模式

本文由 luzhuo 編寫,請保留該資訊.原文 定義乙個演算法 程式 的骨架,從而讓子類根據這個骨架實現剩餘的邏輯 抽象模板 author luzhuo public abstract class time protected abstract void code 具體模板 author luzhu...

JAVA 設計模式之模板模式

模板模式 提供通用模板,高度抽象將通用演算法封裝,暴露子類物件特有演算法重寫。簡述直接上demo 通用模板類 package com.coamc.android.api.template version v 2.0.0 title bankte package com.coamc.android.a...

java設計模式之模板模式

模板模式是類的行為模式。準備乙個抽象類,將部分邏輯以具體方法以及具體建構函式的形式實現,然後宣告一些抽象方法來迫使子類實現剩餘的邏輯。不同的子類可以以不同的方式實現這些抽象方法,從而對剩餘的邏輯有不同的實現。這就是模板方法模式的用意。比如定義乙個操作中的演算法的骨架,將步驟延遲到子類中。模板方法使得...