定義:
定義一個用于建立對象的接口,讓子類決定執行個體化哪一個類。工廠方法使一個類的執行個體化延遲到了其子類。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SMhRzNxUmYiljMmZTZxMWM1UTM2kDZkNDO2M2NkZTN18CX2AzLchDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL2M3Lc9CX6MHc0RHaiojIsJye.png)
優點:
工廠方法模式是對簡單工廠模式的進一步抽象和推廣。由于使用了多态性,工廠方法保持了簡單工廠模式的優點,而且客服了簡單工廠違背開放-封閉原則的缺點。
缺點:
每加一個産品,就需要加一個産品工廠的類,增加了額外的開發量。
與簡單工廠模式的差別:
簡單工廠模式:
最大的優點在于工廠類中包含了必要的邏輯判斷,根據用戶端的選擇條件動态執行個體化相關的類。對于用戶端來說,去除了與具體産品的依賴。
但是,添加功能的話,需要添加工廠類的case分枝條件。=對擴充、修改開放了。違背了開放-封閉原則。
添加一個産品,需要修改用戶端和工廠類的case分支;需要添加一個功能類
工廠方法模式:
添加一個方法,需要修改用戶端;需要添加一個工廠類和功能類。