一、概述
定義一個工廠類,它可以根據參數的不同返回不同類的實例,被創建的實例通常都具有共同的父類。因爲在簡單工廠模式中用於創建實例的方法是靜態(static)方法,因此簡單工廠模式又被稱爲靜態工廠方法(Static Factory Method)模式,它屬於類創建型模式。
當我們需要創建各種不同對象,這些類稱爲具體產品類(ConcreteProduct),而將它們公共的代碼進行抽象和提取後封裝在一個抽象產品類或產品接口(Product)中,每一個具體產品類都是抽象產品類的子類;然後提供一個工廠類(Factory)用於創建各種產品,在工廠類中提供一個創建產品的工廠方法,該方法可以根據所傳入的參數不同創建不同的具體產品對象;客戶端只需調用工廠類的工廠方法並傳入相應的參數即可得到一個產品對象。而無須直接使用new關鍵字來創建對象,也就是對象的創建由工廠來幫你完成、你不需要知道他的創建過程。
二、適用場景
(1) 工廠類負責創建的對象比較少,由於創建的對象較少,不會造成工廠方法中的業務邏輯太過複雜。
(2) 客戶端只知道傳入工廠類的參數,對於如何創建對象並不關心。
三、UML類圖分析
四、參與者
1、Factory (工廠角色):
工廠角色即工廠類,它是簡單工廠模式的核心,負責實現創建所有產品實例的內部邏輯;工廠類可以被外界直接調用,創建所需的產品對象。
2、Product (抽象產品類或接口):
它是工廠類所創建的所有對象的父類,所創建的具體產品對象都是其子類對象。
3、ConcreteProduct (具體產品角色):
它是簡單工廠模式的創建目標。
五、用例學習
(1)產品接口類:Product.java
(2) 具體的產品類A:ConcreteProductA.java
(3) 具體的產品類A:ConcreteProductB.java
(4) 具體的產品類A:ConcreteProductC.java
(5)生產產品的工廠類 (簡單的工廠類/靜態工廠類):ProductFactory.java
(6) 測試類:ProductTest.java
(7)運行效果如下: