首頁  >  文章  >  Java  >  Java設計模式之模版方法模式解析

Java設計模式之模版方法模式解析

WBOY
WBOY原創
2024-05-09 17:27:01868瀏覽

模板方法模式是一種行為設計模式,它定義了演算法的骨架,部分步驟由子類別實作。 (1)它包含抽象類別(定義骨架)和具體類別(實作特定步驟)。 (2)抽象類別定義公共操作和鉤子方法。 (3)具體類別覆蓋鉤子方法以自訂行為。 (4)優點包括可重複使用性、彈性、擴充性。 (5)限制包括複雜性和效能開銷。

Java設計模式之模版方法模式解析

Java 設計模式之模版方法模式

簡介

範本方法模式是一種行為設計模式,它定義一個操作的骨架,將部分步驟延遲到子類別中實作。此模式允許子類別自訂演算法的特定步驟,而無需更改演算法的整體結構。

結構

模板方法模式包含以下主要角色:

  • 抽象類別(Abstract):定義演算法的骨架,包括公共操作和可選鉤子方法。
  • 特定類別 (Concrete):實作演算法的特定步驟,覆寫鉤子方法以自訂行為。

程式碼範例

// 抽象类
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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn