概述
定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。
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
開始列印
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
二十三種設計模式之 (十) 原型模式
prototype 原型模式 實際也叫轉殖模式 用乙個已經建立的例項作為原型,通過複製該原型物件來建立乙個和原型相同或相似的新物件。在這裡,原型例項指定了要建立的物件的種類。用這種方式建立物件非常高效,根本無須知道物件建立的細節 原型模式的優點 結構圖 例項 建立乙個person物件,通過原型模式轉...
二十三種設計模式之組合模式
組合模式 將物件聚合成樹形結構來表現 整體 部分 的層次結構。組合模式能讓客戶以一致的方式來處理個別物件以及物件組合。也就是我們可以忽略物件組合與個體之間的差別。應用場景 餐廳合併列印主選單 子選單 public abstract class menucomponent public string ...
二十三種設計模式之工廠模式
工廠模式的核心 例項化物件 原因 有些物件不能直接例項化,比如介面 抽象類及複雜物件的其他依賴 核心 呼叫工廠class的靜態方法例項化物件 以日誌為例 public class staticfactory 核心 先建立工廠物件,之後呼叫工廠方法 例項化工廠模式 public class insta...