Java設計模式(八):模板方法模式

模板方法模式(template method pattern)

模板方法模式(template method pattern):屬於行爲型模式。定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。


模板方法模式UML圖

Java設計模式(八):模板方法模式

Java


模板方法模式涉及的角色

抽象模板(Abstract Template)角色:

  1. 定義並實現了一個模板方法。這個模板方法一般是一個具體方法,它給出了一個頂級邏輯的骨架,而邏輯的組成不走在相應的抽象操作中,推遲到子類實現。頂級邏輯也可能頂用一些具體方法。

  2. 定義了一個或多個抽象操作,以便讓子類實現。這些抽象操作基本操作,它們是一個頂級邏輯的組成步驟。 具體模板(Concrete Template)角色:

  3. 實現父類所定義的一個或多個抽象方法。它們是一個頂級邏輯的組成步驟。

  4. 每一個抽象模板角色都可以有任意多個具體模板角色與之對應,而每一個具體模板角色都可以給出這些抽象方法(也就是頂級邏輯的組成步驟)的不同實現,從而使得頂級邏輯的實現各不相同。


示例代碼

抽象模板類 AbstractTemplate

Java設計模式(八):模板方法模式

Java

具體模板類A ConcreteTemplateA

Java設計模式(八):模板方法模式

Java

具體模板類B ConcreteTemplateB

Java設計模式(八):模板方法模式

Java

客戶端測試類 TestTemplateMethod

Java設計模式(八):模板方法模式

Java

模板方法模式特點

模板方法模式是通過把不變行爲搬移到超類,去除了子類中的重複代碼來實現它的優勢。


模板方法模式使用場景

當不變的和可變的行爲在方法的子類實現中混合在一起的時候,不變的行爲就會在子類中重複出現。我們通過模板方法模式把這些行爲搬移到單一的地方,這樣就幫助子類辦妥重複的不變行爲的糾纏。

Java學習資料獲取(複製下段連接至瀏覽器即可)

data:text/html;charset=UTF-8;base64,5p625p6E5biI5a2m5Lmg6LWE5paZ5YWN6LS56aKG5Y+W6K+35Yqg5omj5omj5Y+35pivMTAxODkyNTc4MA==

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章