什麼是簡單工廠模式
簡單工廠模式是類建立型模式。由一個工廠物件決定建立出哪一種產品類的例項,它可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類。
簡單工廠模式中用於建立例項的方法是靜態(static)方法,因此簡單工廠模式又被稱為靜態工廠方法(Static Factory Method)模式
簡單工廠模式的層次結構
- 工廠角色:簡單工廠模式的核心物件,如下面的TechFactory類
- 抽象角色:抽象角色是具體角色的父類(這裡抽象類也可以),用來描述具體角色公有的函式,如下面的Tech
- 具體角色:工廠根據客戶端各具體角色對應的引數輸入,來返回出對應的具體角色,如下面的PHP與Java
簡單工廠模式的優缺點
優點
工廠類包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴
缺點
在進行具體物件的增加的同時,雖然擴充套件了,但也修改了工廠類的業務邏輯,這違背了開放-封閉原則
例項
抽象角色:
具體角色: 工廠角色: 客戶端:
從例項中,我們再看簡單工廠模式的優缺點
- 優點:比如我們要再新增一個C++類,除了新建一個具體類外,還要在工廠類的邏輯中新增一個case,而客戶端只要進行引數的修改就可以了,讓客戶端只要知道介面以及所需要的引數
- 缺點:顯而易見,要進行switch case的修改,這樣違背了開放-封閉原則
如果有什麼疑問或者錯誤,歡迎指出或者討論,謝謝
參考資料:
- 《大話設計模式》
- 工廠三兄弟之簡單工廠模式(二)-極客學院