【設計模式】Java設計模式之簡單工廠模式

目錄

一、模式定義

二、模式結構

三、模式優點

四、模式缺點

五、模式使用環境

六、簡單工廠模式的簡化


一、模式定義

簡單工廠模式(Simple Factory Pattern):又稱爲靜態工廠方法(Static Factory Method)模式,它屬於類創建型模式。在簡單工廠模式中,可以根據參數的不同返回不同類的實例。簡單工廠模式專門定義一個類來負責創建其他類的實例被創建的實例通常都具有共同的父類
簡單的說,其實就是將一個具體類的實例化交給一個靜態工廠方法來執行,它不屬於GOF的23種設計模式,但現實中卻經常會用到,而且思想也非常簡單。

二、模式結構

不容易畫圖,在此截圖展示。
簡單工廠模式包含如下角色:
Factory:工廠角色
Product:抽象產品角色
ConcreteProduct:具體產品角色

三、模式優點

工廠類含有必要的判斷邏輯,可以決定在什麼時候創建哪一個產品類的實例,客戶端可以免除直接創建產品對象的責任,而僅僅“消費”產品;簡單工廠模式通過這種做法實現了對責任的分割,它提供了專門的工廠類用於創建對象
客戶端無須知道所創建的具體產品類的類名,只需要知道具體產品類所對應的參數即可,對於一些複雜的類名,通過簡單工廠模式可以減少使用者的記憶量。
通過引入配置文件,可以在不修改任何客戶端代碼的情況下更換和增加新的具體產品類,在一定程度上提高了系統的靈活性。

四、模式缺點

由於工廠類集中了所有產品創建邏輯,一旦不能正常工作,整個系統都要受到影響。
使用簡單工廠模式將會增加系統中類的個數,在一定程序上增加了系統的複雜度和理解難度。
系統擴展困難,一旦添加新產品就不得不修改工廠邏輯,在產品類型較多時,有可能造成工廠邏輯過於複雜,不利於系統的擴展和維護。
簡單工廠模式由於使用了靜態工廠方法,造成工廠角色無法形成基於繼承的等級結構

 

五、模式使用環境

在以下情況下可以使用簡單工廠模式:
工廠類負責創建的對象比較少:由於創建的對象較少,不會造成工廠方法中的業務邏輯太過複雜。
客戶端只知道傳入工廠類的參數,對於如何創建對象不關心:客戶端既不需要關心創建細節,甚至連類名都不需要記住,只
需要知道類型所對應的參數。

六、簡單工廠模式的簡化

在有些情況下工廠類可以由抽象產品角色扮演,一個抽象產品類同時也是子類的工廠,也就是說把靜態工廠方法寫到抽象產品類中。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章