大話設計模式 第一章 簡單工廠模式

優勢

  • 工廠類含有必要的判斷邏輯,能夠決定在何時建立哪個產品類的實例,客戶端能夠免除直接建立產品對象的責任,而僅僅「消費」產品;簡單工廠模式經過這種作法實現了對責任的分割,它提供了專門的工廠類用於建立對象。
  • 客戶端無須知道所建立的具體產品類的類名,只須要知道具體產品類所對應的參數便可,對於一些複雜的類名,經過簡單工廠模式能夠減小使用者的記憶量。
  • 經過引入配置文件,能夠在不修改任何客戶端代碼的狀況下更換和增長新的具體產品類,在必定程度上提升了系統的靈活性。

缺點

  • 因爲工廠類集中了全部產品建立邏輯,一旦不能正常工做,整個系統都要受到影響。
  • 使用簡單工廠模式將會增長系統中類的個數,在必定程序上增長了系統的複雜度和理解難度。
  • 系統擴展困難,一旦添加新產品就不得不修改工廠邏輯,一樣破壞了「開閉原則」;在產品類型較多時,有可能形成工廠邏輯過於複雜,不利於系統的擴展和維護。
  • 簡單工廠模式因爲使用了靜態工廠方法,形成工廠角色沒法造成基於繼承的等級結構。

適用環境

在如下狀況下可使用簡單工廠模式:java

  • 工廠類負責建立的對象比較少:因爲建立的對象較少,不會形成工廠方法中的業務邏輯太過複雜。
  • 客戶端只知道傳入工廠類的參數,對於如何建立對象不關心:客戶端既不須要關心建立細節,甚至連類名都不須要記住,只須要知道類型所對應的參數。

模式應用

JDK類庫中普遍使用了簡單工廠模式,如工具類java.text.DateFormat,它用於格式化一個本地日期或者時間。
public final static DateFormat getDateInstance();
public final static DateFormat getDateInstance(int style);
public final static DateFormat getDateInstance(int style,Locale locale);算法

獲取不一樣加密算法的密鑰生成器。
KeyGenerator keyGen=KeyGenerator.getInstance("DESede");工具

補充:

1.業務邏輯與界面邏輯分開
善用封裝/繼承/多態加密

2.UML類圖
UML類圖
(1) 類spa

第一層:類名(若是是抽象類則用斜體表示)
第二層:類的屬性
第三層:類方法
「+」表示public
「-」表示private
「#」表示protected

類

(2) 接口3d

a.第一種表示方法:頂端有《interface》

接口

b.第二種表示方法:棒棒糖表示法

棒棒糖表示法
(3)類與類,類與接口之間的關係code

a.繼承關係:空心三角形+實線

繼承

b.實現接口:空心三角形+虛線

實現接口

c.關聯關係(一個類須要知道/瞭解另外一個類):實線箭頭

關聯關係

d.聚合關係:弱「擁有」關係,A對象能夠包含B對象,但B對象不是A的一部分,菱形+實線箭頭

聚合關係

e.合成(組合)關係:強「擁有」關係,部分和總體的關係,部分和總體生命週期同樣,實心棱形+實線箭頭,數字表示這一端的類能夠有幾個實例

合成關係

f.依賴關係:虛線箭頭

依賴關係

相關文章
相關標籤/搜索