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

Java 設計模式深度解析:抽象工廠模式

     編輯:Java 相關知識

什麼是抽象工廠模式?

抽象工廠模式屬於創建型模式,定義為:為創建一組相關或相互依賴的對象提供一個介面,且無需指定它們的具體類。它是工廠方法模式的升級版,核心在於處理多個產品等級結構。

核心概念:產品族 vs 等級結構

抽象工廠類圖

產品族與等級結構示意

  • 等級結構:繼承自同一介面/抽象類的產品變體(如:兩廂車、三廂車)。
  • 產品族:橫跨不同等級結構、功能相關的產品組合(如:2.0 排量的兩廂車 + 三廂車)。

判斷標準:工廠產品屬同一等級結構 → 工廠方法;橫跨多個等級結構 → 抽象工廠。

代碼實現

interface IProduct1 { void show(); }
interface IProduct2 { void show(); }

class Product1 implements IProduct1 { public void show() { System.out.println("這是1型產品"); } }
class Product2 implements IProduct2 { public void show() { System.out.println("這是2型產品"); } }

interface IFactory {
    IProduct1 createProduct1();
    IProduct2 createProduct2();
}

class Factory implements IFactory {
    public IProduct1 createProduct1() { return new Product1(); }
    public IProduct2 createProduct2() { return new Product2(); }
}

public class Client {
    public static void main(String[] args) {
        IFactory factory = new Factory();
        factory.createProduct1().show();
        factory.createProduct2().show();
    }
}

優缺點

  • 優點:在類內部約束產品族關聯,無需額外管理類;具備工廠方法的解耦優勢。
  • 缺點:擴展產品族極其困難——新增一個產品,幾乎所有工廠類都需修改,違反開閉原則。

適用場景

  • 需創建一系列相互關聯/依賴的產品族。
  • 系統中存在多個產品等級結構(多個抽象類),且各結構的實現類間有約束關係。
  • 若各等級結構無關聯,用多個獨立工廠更合適。

總結:工廠模式的演變本質

簡單工廠 → 工廠方法 → 抽象工廠,本質都是為了解耦。實務中不必糾結名稱,關鍵在於:是否達到降低耦合的目的? 需求變更時,模式邊界常模糊演變,保持靈活應對才是關鍵。

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