模板方法定義:
定義乙個操作中的演算法框架,而將步驟延遲到子類之中,子類不改變演算法的結構即可改變演算法的某些特性。
也就是說可以對一些複雜的演算法進行分割,將其演算法中固定不變的部分設計為模板方法
並將共性行為提成父類具體方法,而一些可以改變的細節由其子類來實現。
即一次性實現乙個演算法的不變部分,並將可變的行為留給子類來實現。
同時通過子類鉤子行為實現子類對父類的反向控制,來決定演算法的執行步驟!
設計模式的本質是面向介面,面向抽象,面向擴充套件程式設計
但是模板方法的特點導致其不能面向介面,退而求其次採用面向抽象程式設計
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...
設計模式 設計原則與設計模式
一切設計都為了 的可擴充套件性和可讀性,都為了應對變化!我們是基於設計原則的思想,來選擇設計模式去實現,可讀,可擴充套件的目標!核心設計思想 對擴充套件開放,對修改關閉。含義 抽象可變功能,可變功能通過子類擴充套件實現,避免對已有抽象實現的修改。優點 便於擴充套件 核心設計思想 單個方法或單個類或單...