首頁 > Java > java教程 > 主體

怎麼用Java程式碼實作工廠方法模式

WBOY
發布: 2023-05-16 17:46:15
轉載
884 人瀏覽過

1. 工廠方法模式介紹

定義:工廠方法模式是對簡單工廠模式進一步的抽象化,好處是可以使系統不修改原來程式碼的情況下引進新的產品,即滿足開閉原則。建立一個介面用於物件實例化,讓子類別決定哪個類別被實例化,從而可以將類別的實例化過程延遲到子類別中。

2. 工廠方法模式類別圖UML

怎麼用Java程式碼實作工廠方法模式

#3.工廠方法模式角色說明

抽象工廠(AbstractFactory):提供了創建產品的接口,調用方通過它訪問具體工廠的工廠方法來創建產品

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

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

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

4. 程式碼實作

工廠方法模式實作:

/**
 * 抽象工厂:提供具体工厂的共有方法
 */
public interface Product {
    public void show();
}

public class ConcreteProduct1 implements Product {
    @Override
    public void show() {
        System.out.println("具体产品1展示...");
    }
}

public class ConcreateProduct2 implements Product {
    @Override
    public void show() {
        System.out.println("具体产品2展示...");
    }
}


/**
 * 抽象工厂
 */
public interface AbstractFactory {
    public Product createProduct();
}

/**
 * 具体工厂1产生具体产品1
 */
public class ConcreteFactory1 implements AbstractFactory {
    @Override
    public Product createProduct() {
        ConcreteProduct1 concreteProduct1 = new ConcreteProduct1();
        System.out.println("具体工厂1创建具体产品1...");
        return concreteProduct1;
    }
    
public class ConcreteFactory2 implements AbstractFactory {
    @Override
    public Product createProduct() {
        System.out.println("具体工厂2产生具体产品2...");
        return new ConcreateProduct2();
    }
}
登入後複製

呼叫方法:

//获取具体产品1
        Product product = new ConcreteFactory1().createProduct();
        product.show();

        Product product1 = new ConcreteFactory2().createProduct();
        product1.show();
登入後複製

使用步驟:

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

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

  • #建立抽象工廠類,定義特定工廠的公共介面

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

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

#5. 工廠模式再探究

解決問題:解決了簡單工廠類別新增產品需要修改工廠類別的方法邏輯問題,也就是為別開閉原則。

將具體的產品創建退出到工廠類別的子類別(具體工廠),此時工廠類別不再負責所有產品的創建,而是給出具體工廠必須實現的接口,這樣工廠方法在在增加新的產品的時候,就不需要修改工廠類的邏輯,而是增加了新的工廠子類,符合開閉原則。

6. 優缺點

優點:

  • 彈性強,對於新產品的創建,只需要多寫一個對應的工廠類別

  • 使用者只需要指導工廠的名稱就可以獲得所要的產品,不需要指導產品具體創建過程

缺點:

  • 類別的數量容易過多,增加了複雜度

  • 每個工廠只能生產一種產品,次弊端可以使用抽象工廠模式解決

7. 應用場景

客戶只專注於創建產品的工廠名,不需要知道特定的產品名稱

以上是怎麼用Java程式碼實作工廠方法模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板