23種設計模式之——工廠方法模式


有了簡單工廠模式,為什么還需要工廠方法模式?

簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態實例化相關的類,對於客戶端來說,去除了與具體產品的依賴。如果簡單工廠模式需要改動,比如新增加一個運算,那么我們一定要給運算工廠類的方法里面加“Case”的分支條件的,修改原來的類。這樣我們不但對擴展開放了,對修改也開放了,違背了開發-封閉原則的。

什么是工廠方法模式?

定義一個用戶創建對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子類。

 

工廠方法模式實現:

通過一個簡易計算器程序來實現工廠方法模式。

首先先按照簡單工廠模式創建好,運算抽象類,加法運算實現類和減法運算實現類。

運算抽象類:

加法實現類:

減法實現類:

省略除法實現類和乘法實現類,如需要可自行構建。

接下來構建一個工廠接口:

然后用加減各建一個具體工廠去實現這個接口:

加法類工廠:

減法類工廠:

省略除法工廠和乘法工廠,如有需要自行構建,方法雷同。

客戶端實現如下:

首先通過創建yige加法工廠的對象,在通過該對象去調用加法方法獲得的加法對象,然后調用計算方法得到計算結果。

運行結果為:

 

工廠方法模式實現時,客戶端要決定實例化哪一個工廠來實現運算類,選擇判斷的問題還是存在的,也就是說,工廠方法把簡單工廠的內部邏輯判斷移到了客戶端代碼來進行。你想要加功能,本來是改工廠類的,而現在是修改客戶端!

喜歡的小伙伴們可以搜索我們個人的微信公眾號“程序員的成長之路”點擊關注或掃描下方二維碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM