概述
定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。templatemethod使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。
適用性
1.一次性實現乙個演算法的不變的部分,並將可變的行為留給子類來實現。2.各子類中公共的行為應被提取出來並集中到乙個公共父類中以避免**重複。
首先識別現有**中的不同之處,並且將不同之處分離為新的操作。
最後,用乙個呼叫這些新的操作的模板方法來替換這些不同的**。
3.控制子類擴充套件。
參與者
1.abstractclass定義抽象的原語操作(primitiveoperation),具體的子類將重定義它們以實現乙個演算法的各步驟。
實現乙個模板方法,定義乙個演算法的骨架。
該模板方法不僅呼叫原語操作,也呼叫定義在abstractclass或其他物件中的操作。
2.concreteclass
實現原語操作以完成演算法中與特定子類相關的步驟。
類圖
例子
abstractclass
public abstract class template}}
concreteclass
public class templateconcrete extends template}
test
public class test}
result
開始列印這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
GoF23種設計模式
設計模式的經典名著 design patterns elements of reusable object oriented software,中譯本名為 設計模式 可復用物件導向軟體的基礎 的四位作者erich gamma richard helm ralph johnson,以及john vli...
GoF 23種設計模式
建立型模式 factory模式 abstractfactory模式 singleton模式 builder模式 prototype模式 結構型模式 bridge模式 adapter模式 decorator模式 composite模式 flyweight模式 facade模式 proxy模式 行為模式...
GoF23種設計模式
設計模式的經典名著 design patterns elements of reusable object oriented software,中譯本名為 設計模式 可復用物件導向軟體的基礎 的四位作者erich gamma richard helm ralph johnson,以及john vli...