模板方法模式是一種行為設計模式,它定義了演算法的骨架,部分步驟由子類別實作。 (1)它包含抽象類別(定義骨架)和具體類別(實作特定步驟)。 (2)抽象類別定義公共操作和鉤子方法。 (3)具體類別覆蓋鉤子方法以自訂行為。 (4)優點包括可重複使用性、彈性、擴充性。 (5)限制包括複雜性和效能開銷。
Java 設計模式之模版方法模式
簡介
範本方法模式是一種行為設計模式,它定義一個操作的骨架,將部分步驟延遲到子類別中實作。此模式允許子類別自訂演算法的特定步驟,而無需更改演算法的整體結構。
結構
模板方法模式包含以下主要角色:
程式碼範例
// 抽象类 abstract class AbstractClass { public void execute() { preProcess(); process(); postProcess(); } protected abstract void preProcess(); protected abstract void process(); protected abstract void postProcess(); } // 具体类 class ConcreteClass1 extends AbstractClass { @Override protected void preProcess() { System.out.println("Performing pre-processing..."); } @Override protected void process() { System.out.println("Performing processing..."); } @Override protected void postProcess() { System.out.println("Performing post-processing..."); } } // 具体类 class ConcreteClass2 extends AbstractClass { @Override protected void preProcess() { System.out.println("Performing pre-processing for ConcreteClass2..."); } @Override protected void process() { System.out.println("Performing processing for ConcreteClass2..."); } @Override protected void postProcess() { System.out.println("Performing post-processing for ConcreteClass2..."); } } // 实战案例 public class Main { public static void main(String[] args) { AbstractClass concreteClass1 = new ConcreteClass1(); concreteClass1.execute(); // 输出: // Performing pre-processing... // Performing processing... // Performing post-processing... System.out.println(); AbstractClass concreteClass2 = new ConcreteClass2(); concreteClass2.execute(); // 输出: // Performing pre-processing for ConcreteClass2... // Performing processing for ConcreteClass2... // Performing post-processing for ConcreteClass2... } }
優點
限制
以上是Java設計模式之模版方法模式解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!