三個工廠模式的分析

2021-06-22 04:26:57 字數 1005 閱讀 8622

學習設計模式很長時間了,一直想把這些模式進行分類和總結,卻不知道從**開始。發現工廠模式是乙個系列,就從三個工廠模式說起吧。

首先來說簡單工廠模式,以設計計算器為例分析這個模式,簡單工廠模式抽象出了乙個業務邏輯的父類,父類定義了定義了屬性和方法,子運算類只需要重寫運算方法即可,客戶端負責輸入和輸出資料,運算工廠類決定例項化物件。

簡單工廠類結構圖:

簡單工廠實現了業務邏輯和介面邏輯的分離,但是如果我們需要增加或減少計算器功能,需要修改運算工廠類,這不符合開放封閉原則,這個模式要慎重使用。

前邊的簡單工廠模式因為運算工廠類不符合開放封閉原則,工廠方法類很好的解決了這個問題。還是以計算器為例,在簡單工廠模式的基礎上,我們來改進這個模式,我們把運算工廠的選擇方法寫成工廠類,然後抽象出乙個公共介面,由各個子工廠類實現這個介面,判斷應該例項化哪個物件。

工廠方法類結構圖:

工廠方法模式克服了簡單工廠違背開放封閉原則的缺點,又保持了封裝物件建立過程的優點。它的缺點是每增加乙個產品,需要增加乙個產品工廠的類,增加了額外的開發量,並且工廠方法沒有避免選擇判斷的問題,只是把這個任務交給了客戶端。

抽象工廠模式:提供乙個建立一系列相關或相互依賴物件的介面,而無需制定它們具體的類。抽象工廠的優點是便於交換產品系列,並且讓具體的建立例項過程與客戶端分離。

抽象工廠類結構圖:

抽象工廠也沒有解決選擇判斷的問題,這裡我們引入反射方法,就是把選擇判斷做成變數來處理,就是將程式選擇判斷由編譯時轉為執行時處理。

軟體開發中,設計模式的使用是把雙刃劍,如果應用得當,可以幫助我們更好的解決問題,如果處理不當,將會使軟體開發和維護更為棘手。

三個工廠模式的區別

簡單工廠是工廠方法模式的特例。工廠方法模式和抽象工廠模式的最主要的區別在於對工廠的抽象程度上。抽象工廠模式中一般是抽象出工廠介面,表示他就是乙個工廠,而不管它是製造什麼產品的工廠,他的抽象程度較高。而工廠方法模式的抽象工廠一般是針對於產品進行抽象,表示它是乙個生產某類產品的工廠。簡單工廠是不支援繼承...

三個工廠有什麼區別

工廠模式的好處就在於將工廠和產品之間的耦合降低,將具體產品的構造過程放在了具體工廠類裡面。在以後擴充套件產品的時候方便很多,只需要新增乙個工廠類,乙個產品類,就能方便的新增產品,而不需要修改原有的 而在簡單工廠中,如果要增加乙個產品,則需要修改工廠類,增加if else分支,或者增加乙個case分支...

工廠模式 三種工廠模式對比分析

將構建過程封裝的好處不僅可以降低耦合如果某個產品構造方法相當複雜,使用工廠模式可以大大減少 重複。總而言之,簡單工廠模式就是讓乙個工廠類承擔構建所有物件的職責。呼叫者需要什麼產品,讓工廠生產出來即可。它的弊端也顯而易見 一是如果需要生產的產品過多,此模式會導致工廠類過於龐大,承擔過多的職責,變成超級...