模板方法模式(Template Method Pattern)是一種行為型設計模式,它定義了一個算法的骨架,而將一些步驟延遲到子類中實現。這樣,子類可以在不改變算法結構的情況下重新定義算法的某些特定步驟。
在模板方法模式中,包含以下主要角色:
抽象類(Abstract Class):負責給出一個算法的輪廓和骨架。它由一個模板方法和若幹個基本方法構成。
模板方法(Template Method):定義了算法的骨架,按某種順序調用其包含的基本方法。
基本方法(Concrete Method):是實現算法各個步驟的方法,是模板方法的組成部分。
抽象方法(Abstract Method):一個抽象方法由抽象類聲明、由其具體子類實現。
鈎子方法(Hook Method):在抽象類中已經實現,包括用於判斷的邏輯方法和需要子類重寫的空方法兩種。
模板方法模式的優點包括封裝不變部分、擴展可變部分,避免重複代碼,提供更好的擴展性。然而,它也有一些缺點,如可能導致類的數量增加,從而增加代碼的複雜性,以及模板方法與子類實現的抽象方法緊密相關,修改模板方法可能需要修改多個子類。
模板方法模式的套用場景包括開發框架中的通用模板實現、業務邏輯中的特定步驟實現等。