1.什麼是模板模式?
模板模式又叫模板方法模式,在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情冴下,重新定義演算法中的某些步驟。
2.模板方法的類結構?
圖模板方法模式包含抽象類和具體實現類兩個角色:
(1) abstractclass(抽象類):在抽象類中定義了一系列基本操作,這些基本操作可以是具體的,也可以是抽象的,每乙個基本操作對應演算法的乙個步驟,在其子類中可以重定義或實現這些步驟。同時,在抽象類中實現了乙個模板方法,用於定義乙個演算法的框架,模板方法不僅可以呼叫在抽象類中實現的基本方法,也可以呼叫在抽象類的子類中實現的基本方法,還可以呼叫其他物件中的方法。
(2) concreteclass(具體子類):它是抽象類的子類,用於實現在父類中宣告的抽象基本操作以完成子類特定演算法的步驟,也可以覆蓋在父類中已經實現的具體基本操作。
3.模板方法的模式實現?
圖在實現模板方法模式時,開發抽象類的軟體設計師和開發具體子類的軟體設計師之間可以進行協作。乙個設計師負責給出乙個演算法的輪廓和框架,另一些設計師則負責給出這個演算法的各個邏輯步驟。實現這些具體邏輯步驟的方法即為基本方法,而將這些基本方法彙總起來的方法即為模板方法。
1. 模板方法
乙個模板方法是定義在抽象類中的、把基本操作方法組合在一起形成乙個總算法或乙個總行為的方法。這個模板方法定義在抽象類中,並由子類不加以修改地完全繼承下來。模板方法使的子類可以在不改變演算法結構的情況下,重新定義演算法中的某些步驟。將主要的方法定義為final,防止子類修改演算法骨架,將子類必須實現的方法定義為abstract。而普通的方法(無final或abstract修飾)則稱之為鉤子。
2. 基本方法
基本方法是實現演算法各個步驟的方法,是模板方法的組成部分。基本方法又可以分為三種:抽象方法(abstract method)、具體方法(concrete method)和鉤子方法(hook method)。
(1) 抽象方法:乙個抽象方法由抽象類宣告、由其具體子類實現。
(2) 具體方法:乙個具體方法由乙個抽象類或具體類宣告並實現,其子類可以進行覆蓋也可以直接繼承。
(3) 鉤子方法:乙個鉤子方法由乙個抽象類或具體類宣告並實現,而其子類可能會加以擴充套件。通常在父類中給出的實現是乙個空實現,並以該空實現作為方法的預設實現,當然鉤子方法也可以提供乙個非空的預設實現。
鉤子作用:
1)作為可選內容,子類可以重寫或者置之不理
2)讓子類有機會對模板方法中即將發生的或者已經發生的步驟做出反應
3)作為控制條件,使得子類可以影響到抽象類中的演算法流程
優點:1)模板方法模式在乙個類中形式化地定義演算法,而由它的子類實現細節的處理。
2)模板方法是一種**復用的基本技術。它們在類庫中尤為重要,它們提取了類庫中的公共行為。
3)模板方法模式導致一種反向的控制結構,這種結構有時被稱為「好萊塢法則」 ,即「別找我們,,我們找你」通過乙個父類呼叫其子類的操作(而不是相反的子類呼叫父類),通過對子類的擴充套件增加新的行為,符合「開閉原則」
缺點:每個不同的實現都需要定義乙個子類,這會導致類的個數增加,系統更加龐大,設計也更加抽象,但是更加符合「單一職責原則」,使得類的內聚性得以提高。
1.定義抽象父類
public abstract class abstractclass ;
// 模板方法,給出了邏輯的骨架,等待子類去實現。
public void templatemethod()
}
2.實現抽象父類
public class concreteclassa extends abstractclass
@override
public void primitiveoperation2()
}
public class concreteclassb extends abstractclass
@override
public void primitiveoperation2()
}
3.客戶端呼叫
public class templatemain
}
執行結果
圖reference:
1.2.
設計模式入門學習 模板方法模式
模板方法模式template method,同樣很簡單的模式,卻被非常廣泛的應用。定義 定義乙個操作中的演算法的骨架,而將一些具體步驟延遲到子類中實現。它使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。適用性 一次性實現乙個演算法的不變部分,並將可變的行為留給子類來實現。各子類中...
模板設計模式 設計模式 模板方法模式
在模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計模式屬於行為型模式。首先需要一定抽象的定義,沒有具體的實現,但是在抽象類的行為中,子類去程序這個抽象類,重寫抽象方法,實現不...
模板設計模式 設計模式之模板模式
模板模式,通常又叫做模板方法模式,乙個抽象類公開定義了執行方法的模板,它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方法進行,這種型別的設計模式屬於行為型模式。模板模式主要解決將通用的演算法抽象起來,同樣的 邏輯出現了重複,就可以使用模板模式進行重構。關鍵 在抽象類實現,其他步驟在子類實現...