設計原則與模式004模板方法

2021-10-01 06:08:10 字數 883 閱讀 4376

模板方法定義:

定義乙個操作中的演算法框架,而將步驟延遲到子類之中,子類不改變演算法的結構即可改變演算法的某些特性。

也就是說可以對一些複雜的演算法進行分割,將其演算法中固定不變的部分設計為模板方法

並將共性行為提成父類具體方法,而一些可以改變的細節由其子類來實現。

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

同時通過子類鉤子行為實現子類對父類的反向控制,來決定演算法的執行步驟!

設計模式的本質是面向介面,面向抽象,面向擴充套件程式設計

但是模板方法的特點導致其不能面向介面,退而求其次採用面向抽象程式設計

public abstract class temlate()

} public void doa()

public abstract boolean doa();

public abstract void doc();

}

模板方法的優缺點以及應用長褲

封裝不變部分,擴充套件可變部分

定義流程規範,不定義具體實現

缺點:父類負責封裝,子類負責實現;但子類實現卻影響了父類的結果

應用場景:

多個子類有公有的方法,並且乙個執行邏輯基本相同

複雜的演算法,將核心設計成模板方法

genericservlet的service模板方法

總的來說:但凡有一套邏輯流程相同,其中部分具體實現隨具體業務場景而定的業務或演算法,就可以採用模板方法設計模式

最佳實踐:

設計原則大思想指導下,

一般不允許父類呼叫子類的行為,

而有這樣的場景出現時,

可以通過模板方法子類影響父類的方式去實現

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

在模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計模式屬於行為型模式。首先需要一定抽象的定義,沒有具體的實現,但是在抽象類的行為中,子類去程序這個抽象類,重寫抽象方法,實現不...

php與設計模式 模板方法模式

將部分邏輯以具體方法以及具體構造形式實現,然後宣告一些抽象方法來迫使子類實現剩餘的邏輯。不同的子類可以以不同的方式實現這些抽象方法,從而對剩餘的邏輯有不同的實現。先制定乙個頂級邏輯框架,而將邏輯的細節留給具體的子類去實現。demo created by phpstorm 抽象模板類 abstract...

設計模式 設計原則與設計模式

一切設計都為了 的可擴充套件性和可讀性,都為了應對變化!我們是基於設計原則的思想,來選擇設計模式去實現,可讀,可擴充套件的目標!核心設計思想 對擴充套件開放,對修改關閉。含義 抽象可變功能,可變功能通過子類擴充套件實現,避免對已有抽象實現的修改。優點 便於擴充套件 核心設計思想 單個方法或單個類或單...