1. 程式人生 > >3種工廠模式的比較

3種工廠模式的比較

簡單工廠:
一個具體工廠通過條件語句建立多個產品,產品的建立邏輯集中與一個工廠類。
客戶端通過傳不同的引數給工廠,實現建立不同產品的目的
增加新產品時,需要修改工廠類、增加產品類,不符合OCP原則

工廠方法:
一個工廠建立一個產品,所有的具體工廠繼承自一個抽象工廠。
客戶端先建立不同產品的工廠,再由工廠建立具體產品,產品的建立邏輯分散在每個具體工廠類中。
客戶端只依賴於抽象工廠與抽象產品,不依賴任何具體的工廠與具體產品
增加新產品時,需要增加工廠類和產品類,符合OCP原則

抽象工廠:
一個具體工廠建立一個產品族,一個產品族是不同系列產品的組合,產品的建立的邏輯分在在每個具體工廠類中。所有的具體工廠繼承自同一個抽象工廠。
客戶端建立不同產品族的工廠,產品族的工廠建立具體的產品對客戶端是不可見的。
增加新的產品族時,需要增加具體工廠類,符合OCP原則。
增加新產品時,需要修改具體工廠類和增加產品類,不符合OCP原則
如果沒有應對“多系列物件建立”的需求變化,則沒有必要使用抽象工廠模式,這時候使用簡單的靜態工廠完全可以。

上述3種模式都使客戶端脫離了與具體產品的耦合,客戶端不關注具體產品的生產方法。