Java常用的設計模式之模板方法模式

2021-08-24 18:14:43 字數 1887 閱讀 4994

1、概念理解

定義乙個模板結構,將具體內容延遲到子類去實現。在不改變模板結構的前提下在子類中重新定義模板中的內容。

2、主要作用

1. 提高**復用性,將相同部分的**放在抽象的父類中,而將不同的**放入不同的子類中;

2. 提高了拓展性,將不同的**放入不同的子類中,通過對子類的擴充套件增加新的行為;

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

3、應用場合

1. 一次性實現乙個演算法不變的部分,並將可變的行為留給子類來實現;

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

3. 需要控制子類的擴充套件。

例項:在炒素菜和葷菜的時候,兩道菜的炒菜步驟有的重複有的卻差別很大:

第一步:建立抽象模板類(abstract class)

package templatemethod;

/** * 建立抽象模板類(abstract class):炒菜的步驟

*/public

abstract

class

cook

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

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

void pouroil()

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

void heatoil()

//第三步:倒食材是不一樣的(乙個倒蔬菜,乙個是倒葷菜)

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

abstract

void pourfood();

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

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

abstract

void poursauce();

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

void fry()

}

第二步:建立具體模板類(concrete class)

炒葷菜:

package templatemethod;

/** * 建立具體模板類(concrete class),即炒菜的具體步驟

* 炒葷菜的具體步驟

*/public

class

meat

extends

cook

@override

public

void

poursauce()

}

炒素菜:

package templatemethod;

/** * 建立具體模板類(concrete class),即炒菜的具體步驟

* 炒素菜的具體步驟

*/public

class

vegetable

extends

cook

@override

public

void

poursauce()

}

第三步:建立執行類,開始執行

package templatemethod;

/** * 執行類,開始執行具體行為:炒菜

JAVA 設計模式之模板模式

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

java設計模式之模板模式

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

Java設計模式之模板模式

從名字上看模板模式與元型模式有點像,但實際上它們有很大的不同。元型模式是建立系列中的模式,它的實現是先為類建立乙個例項,然後對這個例項進行初化,並當成是元型。以後再需要這個類的例項時,不再是從頭開始new,而是從已有的元型clone。當然,元型可能不只乙個,這個時候就要用集合類進行管理了,在clon...