首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 設計模式之模板方法模式介紹

     編輯:Java 相關知識

模板方法模式:定義算法骨架,延遲步驟到子類

模板方法模式 屬於行為型模式。它在一個抽象類中定義一個算法的框架(模板方法),將某些具體步驟的實現延遲到子類中。這使得子類可以在不改變算法結構的情況下,重新定義算法的某些步驟。

核心角色

  • AbstractClass(抽象類):定義模板方法,聲明抽象基本操作(Primitive Operations)。
  • ConcreteClass(具體子類):實現抽象基本操作,完成特定步驟。

經典代碼範例:性能基準測試框架

// 抽象類:定義算法骨架
public abstract class Benchmark {
    // 基本操作:由子類實現具體測試邏輯
    public abstract void benchmark();

    // 模板方法:final 防止被覆寫,封裝算法流程
    public final long repeat(int count) {
        if (count <= 0) return 0;
        long startTime = System.currentTimeMillis();
        for (int i = 0; i < count; i++) {
            benchmark(); // 呼叫基本操作
        }
        long stopTime = System.currentTimeMillis();
        return stopTime - startTime; // 返回總耗時
    }
}

// 具體子類:實現具體測試內容
public class MethodBenchmark extends Benchmark {
    @Override
    public void benchmark() {
        for (int i = 0; i < Integer.MAX_VALUE; i++) {
            System.out.println("i=" + i); // 模擬耗時操作
        }
    }
}

// 客戶端調用
public class Client {
    public static void main(String[] args) {
        Benchmark operation = new MethodBenchmark();
        long duration = operation.repeat(10); // 執行 10 次
        System.out.println("操作耗時:" + duration + " 毫秒");
    }
}

模式優勢

  1. 復用代碼:將不變的流程集中在父類,避免重複。
  2. 擴展性強:新增子類即可擴展功能,符合開閉原則。
  3. 控制反轉:父類調用子類操作(「好萊塢原則」:Don't call us, we'll call you)。

應用場景

  • 多個子類有公共方法,邏輯基本相同。
  • 重要、複雜的算法,核心邏輯固定,邊緣步驟可變。
  • 重構時,將共同行為提取到父類中。

JDK 中的應用

java.util.AbstractList、java.io.InputStream、javax.servlet.http.HttpServlet 等大量使用了模板方法模式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved