工廠方法模式(Factory Method)
概念
定義一個用於創建對象的接口,讓子類決定實例化哪一個類。Factory Method使一個類的實例化延遲到其子類。
模式結構
代碼解析
跟上一節簡單工廠模式一樣,先創建一個產生水果的接口
再創建兩個具體類繼承接口
創建一個接口工廠生產水果,這個工廠不直接有實現方法,而是分散到各個子工廠。
創建兩個工廠的子工廠產生蘋果和梨
測試一下:
現在如果向增加一個產生梨,直接創建一個梨的具體類和生產梨的工廠,不需要修改產生水果的工廠。
直接測試:
彌補了彌補了簡單工廠的不足。(開閉原則)
簡單工廠模式對比
先回到簡單工廠模式中的水果的例子中,如果我們需要增加新的水果梨,我們需要新增梨的子類,並且在工廠方法中加入Case語句來判斷。這顯然違背了開放-封閉原則。
因此工廠方法模式根據依賴倒轉原則,把工廠類抽象出一個接口,這個接口只有一個方法,就是創建抽象產品的工廠方法。然後所有的要生產具體類的工廠就去實現這個接口,這樣,一個簡單工廠模式的工廠類變成了一個工廠抽象接口和多個具體生產對象的工廠。
如下圖所示: