簡單工廠模式與工廠方法模式
阿新 • • 發佈:2018-06-04
interface ace nal tor sim str bre sys 對象比較
- 簡單工廠
- 定義:簡單工廠模式屬於創建型模式,其又被稱為靜態工廠方法模式,這是由一個工廠對象決定創建出哪一種產品類的實例
- 工廠類
public class CamputerFactory { public static Computer createComputer1(String type) { Computer computer = null; switch (type){ case "Lenovo": computer = new LenovoComputer(); break; case "HP": computer = new HPComputer(); break; default:break; } return computer; } }
- 客戶端調用:
@Test public void testSimpleFactory(){ CamputerFactory.createComputer1("Lenovo").start(); }
- 抽象產品:
public interface Computer { void start(); }
- 具體產品:
public class HPComputer implements Computer { private static final String TAG = "HPComputer"; @Override public void start() { System.out.print(TAG+" work==========="); } }
-
使用場景:
-
工廠類負責創建的對象比較少
-
客戶只需要知道傳入工廠類的參數,而無需關心創建對象的邏輯。
-
優點:使用戶根據參數獲得對應的類實例,避免了直接實例化類,降低了耦合性
-
缺點:可實例化的類型在編譯期間已經被確定。如果增加新類型,則需要修改工廠,這違背了開放封閉原則。簡單工廠需要知道所有生成的類型 ,當其子類過多或者子類層次過多時不宜使用
-
- 工廠方法
- 定義:定義了一個用於創建對象的接口,讓子類決定實例化哪個類。工廠方法使一個類的實例化延遲到其子類。工廠方法使一個類的實例化延遲到子類
- 有如下角色:
- 抽象工廠類
- 具體工廠類
- 抽象產品類
- 具體產品類
簡單工廠模式與工廠方法模式