Template Method is a behavioral design pattern that defines the skeleton of an algorithm in the superclass but lets subclasses override specific steps of the algorithm without changing its structure.
--Refactoring Guru
模板方法模式是一種行為型設計模式,它在父類別定義了一種演算法的骨架,允許子類別在不修改結構的情況下覆寫特定步驟。
模板方法模式通常用於以下情況:
定義演算法的架構:
當你需要定義一個演算法的基本結構,但希望允許不同部分的具體實作有所不同時,可以使用模板方法模式。這確保了演算法的整體結構在所有子類別中保持一致。
避免程式碼重複:
如果多個類別具有相似的演算法結構,但具體步驟有所不同,模板方法幫助避免程式碼重複,因為共同的步驟被提取到父類別中。
子類別定製:
當您希望允許子類別對演算法的特定部分進行個別定製時,模板方法模式很有用。子類別可以實作父類別中的抽象方法以提供自己的實作。
框架和library開發:
模板方法常見於框架和library的開發中,因為它們定義了框架的核心行為,但讓應用程式開發人員能夠通過子類別來自定義和擴展功能。
固定流程:
當您希望強制執行一個特定的流程或步驟序列,但允許部分步驟根據需要變化時,模板方法是一個理想的選擇。
總之,模板方法模式有助於確保一致性和可重複性,同時允許個別部分有不同的實作方式,這在許多不同的應用程式中都非常有用。
AbstractClass(抽象類別):
這將是一個包含模板方法的抽象類別,該方法定義了創建產品的步驟。它還包含了每個步驟的抽象方法,這些方法將由子類別來實作。
ConcreteClassA/B(具體類別A/B):
這些是具體類別,這些類別繼承自抽象類別並以自己的方式覆寫抽象類別的抽象方法。
Client(客戶端):
客戶端將使用AbstractClass(抽象類別)的模板方法來創建不同的產品。