設計模式之模板方法模式

2021-08-21 10:01:03 字數 1125 閱讀 1400

定義乙個操作中的演算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變乙個演算法的結構即可重新定義該演算法的某些特定步驟。

一般模板方法都加final關鍵字,不允許被複寫。

首先定義乙個抽象類,該類中的方法有兩部分組成,基本方法和模板方法

public

abstract

class abstractclass

}

//實現類a

public

class

classa

extends

abstractclass

@override

protected

void

method2()

}

//實現類b

public

class

classb

extends

abstractclass

@override

protected

void

method2()

}

//客戶端場景類

public

class client

}

輸出結果:

classa method1

classa method2

classb method1

classb method2

抽象模板中的方法盡量定義成protected型別,符合迪公尺特法則,實現類若非必要,盡量不要擴大父類中的訪問許可權。

優點

* 把不變的部分封裝到父類中進行封裝,而可變部分通過繼承進行擴充套件。

* 抽取了公共部分,便於維護.。

* 基本方法由子類進行實現,子類可以自由擴充套件。行為由父類控制,子類進行實現。

缺點

一般來說,抽象類只負責宣告最抽象、最一般的事務屬性和方法,實現類完成具體的屬性和方法。而在模板方法中,抽象類定義了部分抽象方法,子類執行的結果影響了父類的結果,也就是子類對父類產生了影響。

模板設計模式 PHP設計模式之模板方法模式

模板方法模式,也是我們經常會在不經意間有會用到的模式之一。這個模式是對繼承的最好詮釋。當子類中有重複的動作時,將他們提取出來,放在父類中進行統一的處理,這就是模板方法模式的最簡單通俗的解釋。就像我們平時做專案,每次的專案流程實都差不多,都有調研 開發 測試 部署上線等流程。而具體到每個專案中,這些流...

設計模式之模板方法設計模式

父類抽象出子類共有的方法,子類實現各自不同的業務。總之就是一種行為有他們共同的方法,只是他們具體的實現不一樣。比如開車這種行為模式,啟動 換擋 踩油門。每種型號品牌的車都有共同的行為,但是不同型號品牌的車的實現方式可能不同,需要每個品牌型號的車自己實現這些功能。這樣的定義上面行為的模式,稱之為模板方...

設計模式之模板方法模式

定義 定義乙個操作中演算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變演算法的結構即可重定義該演算法中的某些特定步驟 型別 行為類模式 事實上,模板方法是程式設計中乙個經常用到的模式。比如,給定乙個整數陣列,把陣列中的數由大到小順序,然後把排序之後的結果列印出來。這個需求大體可以分為兩部分,...