模板方法模式:定義乙個操作中的演算法的框架,而將一些步驟延遲到子類中。使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。
abstractclass 叫做抽象模板,它的方法分為兩類:
● 基本方法
基本方法也叫做基本操作,是由子類實現的方法,並且在模板方法被呼叫。
● 模板方法
可以有乙個或幾個,一般是乙個具體方法,也就是乙個框架,實現對基本方法的排程,完成固定的邏輯。
注意: 為了防止惡意的操作,一般模板方法都加上 final 關鍵字,不允許被覆寫。
具體模板:concreteclass1 和 concreteclass2 屬於具體模板,實現父類所定義的乙個或多個抽象方法,也就是父類定義的基本方法在子類中得以實現
使用場景:
● 多個子類有公有的方法,並且邏輯基本相同時。
● 重要、複雜的演算法,可以把核心演算法設計為模板方法,周邊的相關細節功能則由各個子類實現。
● 重構時,模板方法模式是乙個經常使用的模式,把相同的**抽取到父類中,然後通過鉤子函式(見「模板方法模式的擴充套件」)約束其行為。
public
abstract
class
discount
//節日型別
protected
abstract string getfestival()
;//總金額
設計模式學習之模板方法
1.名詞解釋 模板方法 定義乙個操作中的演算法的框架,而將一些步驟延遲到子類中,模板方法可以使子類可以不修改乙個演算法框架的前提下即可重構該方法的某些特定步驟。模板方法通過把不變行為搬到父類,去除子類中的重複 2.示例 模板方法抽象類 package designpattern.templateme...
JavaScript設計模式九(模板方法模式)
定義 模板方法模式是一種只需要使用繼承就可以實現的非常簡單的模式 模板方法模式由兩部分組成,第一部分是抽象父類,另一部分是具體的實現子類。通常抽象父類中封裝了子類的演算法框架,包括實現一些公共的方法以及封裝子類中所有方法的執行順序。子類通過繼承這個類,然後繼承了這個演算法,然後重寫父類的方法 例子是...
設計模式學習之十二 模板方法模式
製作豆漿的流程,選材 新增配料 浸泡 豆漿機中打碎 通過不同的配料。可以製作不同口味的豆漿 選材。浸泡,和打碎這幾個步驟對於製作每種口味的豆漿都是一樣的 通過模板方法模式完成 模板方法模式 template method pattern 又叫模板模式。在乙個抽象類公開定義執行它的方法的模板。它的子類...