設計模式——工廠(簡單工廠、工廠方法、抽象工廠)

開發過程中經常聽到工廠這個詞,其實根據個人經驗,簡單工廠用的是比較多的。工廠方法和抽象工廠是GoF23種設計模式中的一種,而我們常使用的簡單工廠並不是一種設計模式,可以說是我們自己的一種俗稱。

定義

簡單工廠: 直接通過一個Factory類創建多個實體類的構造方式。

工廠方法: 一個抽象產品類,可以派生出多個具體產品類。一個抽象工廠類,可以派生出多個具體工廠類。每個具體工廠類只能創建一個具體產品類的實例。

抽象工廠:個抽象產品類,每個抽象產品類可以派生出多個具體產品類。一個抽象工廠類,可以派生出多個具體工廠類。每個具體工廠類可以創建多個具體產品類的實例。

工廠方法與抽象工廠區別:工廠方法模式只有一個抽象產品類,而抽象工廠模式有多個。 工廠方法模式的具體工廠類只能創建一個具體產品類的實例,而抽象工廠模式可以創建多個。

模板

簡單工廠

工廠方法

  1. AbstractProduct : 抽象產品 (在工廠方法模式中只有一個AbstractProduct)
  2. ConcreteProductXXX : 具體的產品類
  3. AbstractFactory: 抽象工廠類
  4. ConcreteFactory: 具體工廠類(每個工廠只能創建一個具體產品)

抽象工廠

  1. ProductX : 產品接口(抽象工廠中可以有多個產品抽象類)
  2. ConcreteProductX : 具體產品
  3. Creator: 抽象工廠類(也可以叫Factory,定義了創建多個產品種類的的接口)
  4. ConcreateCreateX: 具體工廠

實例

參考: 淺談簡單工廠,工廠方法,抽象工廠的區別和使用

優點

  1. 將對象的構造與獲取隔離
  2. 面向接口編程,可以動態增加Product/Factory,而且方便單元測試
  3. 一般還可以在工廠中統一維護一個單例(單例模式、靜態方法)

缺點

  1. 增加了多個類/接口,增加了系統的複雜性

參考:
https://www.cnblogs.com/gclokok/p/10029088.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章