搜尋
首頁Javajava教程怎麼用Java程式碼實作工廠方法模式

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

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)