首頁  >  文章  >  Java  >  如何在Java中實作抽象工廠模式的程式碼呢?

如何在Java中實作抽象工廠模式的程式碼呢?

WBOY
WBOY轉載
2023-05-08 22:01:061340瀏覽

解決工廠方法模式的問題:一個具體工廠只能創建一類產品,而實際過程中一個工廠往往需要生成很多的產品,這種可以採用抽象工廠模式。

1. 抽象工廠模式解決

定義:提供一個創建一系列相關或者互相依賴對象的接口,無需指定他們的具體的類,具體的工廠負責實現具體的產品的實例。使一個工廠可以產生多個產品。

2. 抽象工廠類別圖UML

如何在Java中實作抽象工廠模式的程式碼呢?

3. 抽象工廠模式的主要角色

抽象工廠(AbstractFactory):提供了建立產品的接口,包含了多個創建產品的接口方法,可以創建多個不同等級的產品

具體工廠(ConcreteFactory):實現了抽象工廠定義的方法,完成具體產品的創建

抽象產品(Product):定義了產品的規範,描述產品的主要特徵和性能

具體產品(ConcreteProduct):實現了抽象產品的定義的方法,有具體工廠來創建產品,具體工廠和具體產品一對多關係

4. 程式碼實作

抽象工廠方法實作:

public interface AbstractFactory {
    public Product1 createProduct1();
    public Product2 createProduct2();
}

public class ConcreteFactory1 implements AbstractFactory {
    @Override
    public Product1 createProduct1() {
        System.out.println("具体工厂1产生具体产品1...");
        return new ConcreteProduct1();
    }

    @Override
    public Product2 createProduct2() {
        System.out.println("具体工厂1产生具体产品2...");
        return new ConcreteProduct2();
    }
}

使用步驟:

  • 建立抽象產品類,定義產品的公共方法

  • 建立特定產品類別(實作抽象產品介面),定義產生的特定產品

  • #建立抽象工廠類,定義特定工廠的公共接口,一個工廠類別可以創建不同等級的產品

  • 建立具體工廠類,定義創建對應特定產品實例的方法

  • 呼叫方呼叫特定的工廠類別的方法,從而創建不同具體產品的實例

#5. 抽象工廠方法再探究

解決問題:每個工廠只能創造一類產品,也就是工廠方法的缺點

6. 優缺點

優點:

  • 可以在工廠類別內部對產品中相關聯的多層產品共同管理,而不必專門引入新的類別來管理

  • 抽象工廠增加了程式的可擴展性,當新增一個新的產品族時,不需要修改原始碼,滿足開閉原則

缺點:

  • 當產品族新增一個產品類型時,所有的工廠類別都需要修改,增加了系統的抽象性和理解難度

7. 適用範例

王者榮耀中提供了很多的英雄,英雄分為射手、輔助、打野、坦克等職業,不同的職業對應的技能,屬性不同。聲明坦克、法師、刺客等多個工廠子類,每個工廠可以生產相應技能的應用。

以上是如何在Java中實作抽象工廠模式的程式碼呢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除