設計模式雜談 工廠方法模式與抽象工廠模式

2022-02-27 17:28:34 字數 1314 閱讀 7972

參考

《大話設計模式》

overview

本來在剛學習完工廠方法模式的時候,感覺很清晰和明了,但是後來學習到了抽象工廠模式的時候,瞬間感覺被搞懵了。工廠方法模式抽象工廠模式不是一樣嗎? 這兩個沒什麼區別呀。經過度娘的幫助我有一些我自己的看法,與大家分享。

工廠方法模式

我們先來看一下關於工廠方法模式的專業解釋

工廠方法模式(factory method): 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類。

拙見:我認為工廠模式是對簡單工廠模式的乙個優化,解決了簡單工廠違反了開放-封閉原則的問題。在工廠方法中如果增加增加乙個操作物件的話,是不用對工廠類進行修改的。只需要建立乙個新的工廠即可。由客戶端決定例項化哪個子類的物件,而不是將建立物件的操作放在工廠中。

雖然工廠方法解決了簡單工廠存在違反開放-封閉原則,但是同時也帶來了複雜度的上公升:每新建乙個具體的操作類,都需要增加乙個額外的工廠類。建立了大量的工廠類。

抽象工廠模式

同樣,我們先來看一下關於抽象工廠的專業解釋

抽象工廠模式(abstract factory), 提供乙個建立一系列相關或相互依賴物件的介面,而無需指定他們具體的類。

拙見我認為抽象工廠最大的特點是:抽象工廠建立的是一系列產品,比如上圖中的外設工廠,就是建立了一系列外設相關的產品。

總結

不同點工廠方法模式和抽象工廠模式最大的區別就是:工廠方法模式,乙個工廠只建立一種產品,而抽象工廠模式建立的是一系列產品。

共同點工廠方法和抽象工廠都是對簡單工廠模式改良或者擴充套件,但是核心的程式設計思想仍然是工廠的思想。

最後有時候,設計模式之間的解析並非那麼的明顯,我們學設計模式一定不要照搬設計模式的模板,而是吸收其思想,有時候,我們可能會對標準的模式進行改造,使其適合特定的環境,有時候我們可能僅僅會時候某個設計模式的一部分,或者將多個設計模式結合在一起來使用。

關於本文,是本人對著兩種模式的乙個自我的總結,文中有任何紕漏,敬請斧正。

設計模式 工廠方法模式與抽象工廠模式

這兩天抽空學習一下設計模式,剛開始遇到工廠模式,感覺工廠方法模式和抽象工廠模式的區別有點模糊,看了之前的面試資料也是有點區分不清,於是查閱一些網上的資料和部落格,記錄一下。1,工廠方法模式 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,工廠方法使得乙個類的例項化延遲到了子類 工廠方法在簡單工...

設計模式 工廠方法 抽象工廠模式

在業務邏輯中往往有需要建立物件的需求 如何將這部分邏輯封裝並且使得其能個適應於頻繁的變化呢?簡單工廠模式 將物件建立邏輯封裝隔離在簡單工廠類的方法中。簡單工廠的常見實現方式 1 簡單工廠類以及其建立物件的靜態方法 其客戶可以直接呼叫該類的靜態方法。2 簡單工廠類以及其建立物件的成員方法 其客戶 需要...

設計模式 工廠方法模式 抽象工廠模式

最近擠了擠時間出來看了下設計模式,汗!總算來總結點東東了,最近專案忙得暈頭轉向了啊t.t好了言歸正傳,開始總結。理論定義來一套 設計模式 design patterns 是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。使用設計模式是為了可重用 讓 更容易被他人理解 保證 可靠性。設計...