Java常用設計模式之簡單工廠模式

林花鹿發表於2018-06-21

什麼是簡單工廠模式

簡單工廠模式是類建立型模式。由一個工廠物件決定建立出哪一種產品類的例項,它可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類。

簡單工廠模式中用於建立例項的方法是靜態(static)方法,因此簡單工廠模式又被稱為靜態工廠方法(Static Factory Method)模式

簡單工廠模式的層次結構

  • 工廠角色:簡單工廠模式的核心物件,如下面的TechFactory類
  • 抽象角色:抽象角色是具體角色的父類(這裡抽象類也可以),用來描述具體角色公有的函式,如下面的Tech
  • 具體角色:工廠根據客戶端各具體角色對應的引數輸入,來返回出對應的具體角色,如下面的PHP與Java
    簡單工廠模式層次結構

簡單工廠模式的優缺點

優點

工廠類包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴

缺點

在進行具體物件的增加的同時,雖然擴充套件了,但也修改了工廠類的業務邏輯,這違背了開放-封閉原則

例項

抽象角色:

抽象角色

具體角色:
具體角色
工廠角色:
工廠角色
客戶端:
客戶端

從例項中,我們再看簡單工廠模式的優缺點

  • 優點:比如我們要再新增一個C++類,除了新建一個具體類外,還要在工廠類的邏輯中新增一個case,而客戶端只要進行引數的修改就可以了,讓客戶端只要知道介面以及所需要的引數
  • 缺點:顯而易見,要進行switch case的修改,這樣違背了開放-封閉原則

如果有什麼疑問或者錯誤,歡迎指出或者討論,謝謝

參考資料:

相關文章