首頁  >  文章  >  Java  >  何時選擇:工廠、工廠方法還是抽象工廠?

何時選擇:工廠、工廠方法還是抽象工廠?

Susan Sarandon
Susan Sarandon原創
2024-11-02 05:49:02580瀏覽

When to Choose: Factory, Factory Method, or Abstract Factory?

理解工廠、工廠方法和抽象工廠設計模式之間的差異

在程式碼中創建物件時,利用諸如工廠、工廠方法和抽象工廠可以增強靈活性並減少耦合。然而,這些模式可能會令人困惑。

工廠模式

工廠模式充當「工廠方法的簡化版本」。它創建物件而不向客戶端公開實例化邏輯。這種方法為物件建立提供了一個集中位置,確保一致性並允許輕鬆修改建立過程。

工廠方法模式

工廠方法模式建立一個介面用於建立對象,同時將實際實例化委託給子類別。這允許支援多個具體實現的單一介面。此模式支援系統內的靈活性和自訂。

抽象工廠模式

抽象工廠模式提供了一個接口,用於創建一系列相關對象,而無需指定其特定類。此模式通常用於依賴注入場景,允許在不同產品系列實作之間輕鬆切換。

何時使用每種模式

  • 工廠:當你想要集中物件建立並減少與特定類別的耦合時使用。
  • 工廠方法:當你需要為物件建立提供通用介面但允許子類別自訂實際實作時。
  • 抽象工廠:當您需要建立具有不同實現的相關物件系列並保持該系列內的一致性時使用。

Java 範例

<code class="java">// Factory
class FruitFactory {
  public Apple makeApple() { return new Apple(); }
  public Orange makeOrange() { return new Orange(); }
}

// Factory Method
abstract class FruitPicker {
  protected abstract Fruit makeFruit();
  public void pick() { Fruit f = makeFruit(); ... }
}
class OrangePicker extends FruitPicker {
  protected Orange makeFruit() { return new Orange(); }
}

// Abstract Factory
interface PlantFactory {
  Plant makePlant();
  Picker makePicker();
}
class AppleFactory implements PlantFactory {
  public Plant makePlant() { return new Apple(); }
  public Picker makePicker() { return new ApplePicker(); }
}</code>

以上是何時選擇:工廠、工廠方法還是抽象工廠?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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