Java設計模式之一——模板方法設計模式(Template Method)
阿新 • • 發佈:2018-12-14
設計原則:不要重複
- DRY(Don’t Repeat Yourself,不要複製自己)
- OAOO(Once and Only once,僅此一次):避免程式碼重複
GOF給出的模板方法模式定義如下:
Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redifine certain steps of an algorithm without changing the algorithm’s structure. 定義在一個操作中的一個演算法框架,把一些步驟推遲到子類中去實現。模板方法模式讓子類不需要改變演算法結構而重新定義特定的演算法步驟。
也就是說模板方法定義了一系列演算法步驟,子類可以去實現/覆蓋其中某些步驟,但不能改變這些步驟的執行順序,模板方法有如下功能:
- 能夠解決程式碼冗餘問題
- 把某些演算法步驟延遲到子類,子類可以實現自己的特性
- 易於擴充套件,通過新類繼承父類即可
示例程式碼一:回家過年步驟模擬
示例程式碼一儘可能避免了冗餘程式碼的出現,例如模板類中的bookTicket()、celebrate()等沒有任何改變的程式碼。但是,隨著乘客出行方式的增多,就會使得子類的個數氾濫。可以通過引入回撥(CallBack)來避免子類個數的增多新航道學校。 例項程式碼二:資料庫結果集處理示例
通過回撥實現模板方法模式,可以避免子類數量的泛濫。此模式在Spring框架裡使用十分廣泛,可以通過檢視原始碼發現。