1. 工廠方法模式介紹
定義:工廠方法模式是對簡單工廠模式進一步的抽象化,好處是可以使系統不修改原來程式碼的情況下引進新的產品,即滿足開閉原則。建立一個介面用於物件實例化,讓子類別決定哪個類別被實例化,從而可以將類別的實例化過程延遲到子類別中。
2. 工廠方法模式類別圖UML
#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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3漢化版
中文版,非常好用

Atom編輯器mac版下載
最受歡迎的的開源編輯器

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