什麼是抽象工廠模式
提供一個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類
抽象工廠模式的層次結構
- 抽象工廠角色
- 具體工廠角色
- 抽象產品角色
- 具體產品角色
抽象工廠模式的優缺點
- 優點:可以說是工廠方法模式的增強,可以在客戶端程式碼的簡單修改就進行產品系列的交換,讓具體的建立例項過程與客戶端分離,客戶端是通過它們的抽象操縱例項,產品的具體類名也被具體工廠的實現分離,不會出現在客戶端程式碼中。
- 缺點:顯而易見,就是增加更多的程式碼量,如果要在系列中新增加一個商品,例如ProductC,除了要新建ProductC,ProductC的實現類,還要在抽象工廠中新增createProductC()方法,以至於在之前的一些工廠實現類中例如ProductFactory1()中也要createProductC()方法,這樣每一次系列中增加或者刪除,如果量多的話,都會造成很多麻煩。
例項
抽象工廠角色:
具體工廠角色:(這裡以ProductFactory1為例子)
抽象產品角色:
具體產品角色:
客戶端:
由例項我們再看抽象工廠模式的優缺點:
- 優點:與工廠方法模式一樣,只需要修改一行程式碼,就可以修改要生成的整個系列的具體產品。
IFactory factory = new ProductFactory1();
--->變成
IFactory factory = new ProductFactory2();
複製程式碼
- 缺點:如果要ProductC的系列,除了新增產品部分的程式碼外,在工廠部分的程式碼都要進行修改。
如果有什麼疑問或者建議,可以在評論下方留言,歡迎討論,謝謝。
參考資料
- 《大話設計模式》