將某些操作的流程在類的方法中定義好,而將這些操作的具體步驟中的邏輯延遲到子類中去實現,這樣子類可以在不改變操作流程的情況下,修改具體步驟中的邏輯。
這裡定義操作執行流程的方法就稱為模板方法,所有的子類都共享該方法,子類的多樣性可以通過定義具體步驟的邏輯展現出來。
在模板方法模式中,需要先定義乙個抽象父類(abstractclass),這個父類被稱為抽象模板,該類中主要包含兩類方法:
確定父類具有哪些方法,以及模板方法的執行流程設計
public abstract class abstractclass
// 模板方法2, 設計操作的執行流程
public void templatemethod2()
}
子類根據具體的需求實現父類中的基本方法
public class concreteclass extends abstractclass
// 根據需求實現基本方法中的邏輯
protected abstract void doanything()
}
對模板方法的測試
public class client
}
《設計模式之禪》讀書筆記 5 模板方法模式
定義 模板方法模式要求定義乙個操作中的演算法框架,而將一些步驟延遲到子類中,使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。通常,演算法框架可使用抽象類定義,其中,可以有乙個或幾個實現對基本方法進行排程的具體方法,也就是乙個框架,叫做模板方法 而由子類實現,並被模板方法呼叫的方法...
《設計模式之禪》讀書筆記 策略模式
策略模式 strategy pattern 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。對於策略模式來說了解清楚它三個角色的作用,基本就差不多了。策略模式的三個角色 它也叫做上下文角色,起承上啟下封裝作用,遮蔽高層模組對策略 演算法的直接訪問,封裝可能存在的變化。策略 演算法家族...
《設計模式之禪》讀書筆記 21 狀態模式
定義 當乙個物件內在狀態改變時允許其改變行為,這個物件看起來像改變了其類。類圖 state抽象狀態角色 介面或抽象類,負責物件狀態定義,並且封裝環境角色以實現狀態切換。concretestate具體狀態角色 每乙個具體狀態必須完成兩個職責 本狀態的行為管理以及趨向狀態處理,通俗地說,就是本狀態下要做...