設計模式 工廠三姐妹

2021-09-23 22:04:31 字數 2481 閱讀 3947

簡單工廠模式

簡單工廠模式是屬於建立型模式,又稱靜態工廠方法模式。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。

簡單工廠模式專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。

簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的乙個特殊實現。

實質

是由乙個工廠類根據傳入的引數,動態決定應該建立哪乙個產品類(這些產品類繼承自乙個父類或介面)的例項。

簡單工廠模式結構

角色類別

說明product

產品類一般是乙個抽象類或是介面

concreteproduct

具體的產品類

實現或是繼承product

factory

工廠類用來建立具體的產品

優點

簡單工廠模式的最大優點在於工程類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴。

缺點

簡單工廠模式不遵循開閉原則,一旦新增新產品就不得不修改工廠邏輯,在產品型別較多時,有可能造成工廠邏輯過於複雜,不利於系統的擴充套件和維護。

使用簡單工廠模式將會增加系統中類的個數,在一定程式上增加了系統的複雜度和理解難度,對系統的維護和擴充套件非常不利。

簡單工廠模式-uml結構圖

個人理解

其中的工廠物件很關鍵,簡單工廠就是由客戶端輸入選擇條件,工廠類根據傳入的引數,動態決定應該建立哪乙個產品類的例項。

工廠方法模式

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

其中,核心結構有四個角色,分別是抽象工廠、具體工廠、抽象產品、具體產品。

抽象工廠(creator)角色:是工廠方法模式的核心,與應用程式無關。任何在模式中建立的物件的工廠類必須實現這個介面。

具體工廠(concrete creator)角色:這是實現抽象工廠介面的具體工廠類,包含與應用程式密切相關的邏輯,並且受到應用程式呼叫以建立產品物件。

抽象產品(product)角色:工廠方法模式所建立的物件的超型別,也就是產品物件的共同父類或共同擁有的介面。

具體產品(concrete product)角色:這個角色實現了抽象產品角色所定義的介面。某具體產品有專門的具體工廠建立,它們之間往往一一對應。

優點

工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴。

在系統中新增產品時,無須修改抽象工廠和抽象產品提供的介面,無須修改客戶端,也無須修改其他的具體工廠和具體產品,而只要新增乙個具體工廠和具體產品就可以了。這樣,系統的可擴充套件性也就變得非常好,完全符合「開閉原則」。

缺點

在新增新產品時,需要編寫新的具體產品類,而且還要提供與之對應的具體工廠類,系統中類的個數將成對增加,在一定程度上增加了系統的複雜度,有更多的類需要編譯和執行,會給系統帶來一些額外的開銷。

工廠方法模式-uml結構圖

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

抽象工廠模式

提供乙個建立一系列相關或依賴物件的介面,而無需指定他們具體的類。

優點易於交換產品系列,由於具體工廠類,在乙個應用中只需在初始化時出現一次,這就使得改變乙個應用的具體工廠變得很容易,它只需要改變具體工廠即可使用不同的產品配置。

它讓具體的建立例項過程與客戶端分離,客戶端是通過他們抽象介面操縱例項,產品的具體類名也被具體工廠的實現分離,不會出現在客戶**中。

缺點

增加新的產品等級結構很複雜,需要修改抽象工廠和所有的具體工廠類,對「開閉原則」的支援呈現傾斜性。

抽象工廠模式-uml結構圖

idepartment介面,用於客戶端訪問,解除與具體資料庫訪問的耦合。

設計模式 工廠三姐妹

工廠三姐妹,指的就是簡單工廠模式,工廠方法模式,和抽象工廠模式。他們三個都屬於建立型模型,主要用於描述如何建立物件。這三個姐妹之間有相似的地方,也有很多不同的地方,下面讓我們來具體看看他們的介紹和區別吧。簡單工廠模式 factory pattern 定義乙個工廠類,它可以根據引數的不同返回不同類的例...

大話設計模式 比較工廠三姐妹

在沒開始看大話設計模式以為是本小人書呢,當我開始看書的時候發現真的是本小人書,通過生活的一些規律告訴我們各種設計模式,借用英語上的就是思維閃現,每次想到設計模式就能想到小故事,看到小故事就能想起是那個設計模式,所以大話設計模式可是本好書,就是以我的水平看讓人暈頭轉向的,而且在看大話模式的時候出現了三...

設計模式總結1 工廠三姐妹

前言 設計模式的總結已經開始,回想起來自己也有一段時間沒有好好總結了,雖說自考很重要,但若經常因為這種時間分配不均的情況而顧此失彼,這不是我們倡導的學習方法,所以,還要不斷進步啊 今天要總結的,是設計模式中的三個模式 工廠三姐妹 簡單工廠模式 工廠方法模式,和抽象工廠模式。首先我們來看一下三個工廠的...