模闆設計模式(template method)
模闆方法模式是基于”繼承“的。
概念
模闆模式定義一個操作中的算法的骨架,而将一些步驟延遲到子類中。模闆方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。這種算法骨架就像模闆一樣,子類通過填裝式重寫父類方法,實作需求的功能。
通過子類來實作具體的功能。
應用
操作算法在這裡描述很生動,比如我們将模闆模式用在流程固定的操作上,比如列印字元,下單訂購,注冊登陸。比如spring 中對 hibernate 的支援,将一些已經定好的方法封裝起來,比如開啟事務、擷取 session、關閉 session 等,程式員不重複寫那些已經規範好的代碼,直接丢一個實體就可以儲存。比如java.io.inputstream。
拓展要點
邏輯處理通用化,父類定義了算法就不需要子類相應再去定義。隻要有多個子類邏輯相同的場景都可以使用模闆設計模式,一般算法用final修飾,避免惡意修改。
缺點
引入了抽象類,每一個不同的實作都需要一個子類來實作,導緻類的個數增加,進而增加了系統實作的複雜度。
優點
提高代碼複用性
将相同部分的代碼放在抽象的父類中
提高了拓展性
将不同的代碼放入不同的子類中,通過對子類的擴充增加新的行為
實作了反向控制
通過一個父類調用其子類的操作,通過對子類的擴充增加新的行為,實作了反向控制 & 符合“開閉原則”