設計模式(二)工廠方法模式 抽象工廠模式

2021-07-25 17:04:08 字數 1505 閱讀 3572

工廠方法模式簡單工廠模式的區別在於:簡單工廠模式用單一工廠來生產所有同種類的產品,而工廠模式是用對應的工廠來生產同一種類的不同產品。對於工廠方法模式而言,其簡單模型的uml為:

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

工廠方法模式的簡單模型的**:

對於工廠方法模式而言,對於同一種類的不同產品,都要單獨乙個工廠為其生產對應的產品,隨著產品數量的增加,工廠的數量也隨著線性增長。由此工廠方法模式對於有著不同種類,且不同種類還有不同產品的物件生成管理,就會有一定的臃腫,由此,可以在一定程度上,結合簡單工廠模式的特點,在有著多型別產品的物件生成中,可以讓乙個工廠負責生產同一型別的產品。這裡,對於「同一型別」這個字眼的理解,可以有多種多樣的理解,重點是如何盡可能的降低**的冗餘,同時保持良好的「開-閉」的特性,有良好的可擴充套件性。

抽象工廠模式:提供建立一系列相關或者相互依賴的物件的介面,而無需制定它們具體的類。

在「大話設計模式」這本書,在抽象工廠模式和工廠方法模式的例子我覺得覺得比較好,是乙個關於資料庫介面的問題,問題背景是:

乙個公司最開始是通過sqlsever建立資料庫的,而隨著業務的變更,需要另外增加另外一種型別的資料庫介面建立資料庫。在只有一張表的情況下,用工廠方法模式的觀點來建立模型的話,應該是這樣的:

這張uml圖代表的意思是:有一張usr表,一張表是用於sqlserver資料庫來方式維護的,另外一張是通過access的資料庫類維護的,那麼如果需要維護另外一張關於住址department的表呢,應該如何處理,按照抽象工廠模式的思想,就是在工廠中提供生產department的介面。uml表示如下:

實現**為:

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

1 工廠方法模式 factory method 定義乙個用於建立物件的介面,讓子類決定例項化哪個類。工廠方法使乙個類的例項化延遲到其子類。正如建立交通工具,可以通過不同的工廠方法建立所需的物件。類圖 對比 1 工廠方法在產品維度,即類圖中movable方向拓展比較方便,只需增加對應的類及相應的工廠方...

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

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

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

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