簡單工廠模式 工廠方法模式 抽象工廠模式

2021-07-04 04:11:28 字數 1830 閱讀 4290

簡單工廠模式

簡單工廠模式並不是23種設計模式中的,但是在實際的應用中卻經常使用。

uml圖:

簡單工廠模式的建立目標,所有建立的物件都是充當這個角色的某個具體類的例項。

在這個模式中,

工廠類是整個模式的關鍵所在。它包含必要的判斷邏輯,能夠根據外界給定的資訊,決定究竟應該建立哪個具體類的物件。使用者在使用時可以直接根據工廠類去建立所需的例項,而無需了解這些物件是如何建立以及如何組織的。有利於整個軟體體系結構的優化。

不難發現,簡單工廠模式的缺點也正體現在其工廠類上,

由於工廠類集中了所有例項的建立邏輯,所以「高內聚」方面做的並不好。另外,當系統中的具體產品類不斷增多時,可能會出現要求工廠類也要做相應的修改,擴充套件性並不很好。

c++實現:

//簡單工廠模式

#includeusing namespace std;

class product

工廠方法模式工廠方法模式是在簡單工廠模式的基礎上,對「工廠」新增了乙個抽象層。將工廠共同的動作抽象出來,作為抽象類,而具體的行為由子類本身去實現,讓子類去決定生產什麼樣的產品。

uml圖:

適用場合:

工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角色的情況下引進新的產品。

1、在設計的初期,就考慮到產品在後期會進行擴充套件的情況下,可以使用工廠方法模式;

2、產品結構較複雜的情況下,可以使用工廠方法模式;

c++**實現:

//工廠方法模式

#includeusing namespace std;

class product

簡單工廠模式簡單工廠模式中,對工廠類的依賴太嚴重,所有的判斷全部放在工廠類中,可擴充套件性不強。

抽象工廠模式,就是工廠方法模式的擴充套件和延伸,但是抽象工廠模式,更有一般性和代表性;它具有工廠方法具有的優點,也增加了解決實際問題的能力。

uml圖:

如圖所示,抽象工廠模式,就好比是兩個工廠方法模式的疊加。抽象工廠建立的是一系列相關的物件,其中建立的實現其實就是採用的工廠方法模式。在工廠factory中的每乙個方法,就好比是一條生產線,而生產線實際需要生產什麼樣的產品,這是由factory1和factory2去決定的,這樣便延遲了具體子類的例項化;同時集中化了生產線的管理,節省了資源的浪費。

使用場合:

1.希望乙個系統不應當依賴於產品類例項如何被建立、組合和表達的細節 時。

2.乙個系統有多於乙個的產品族,而系統只消費其中某一產品族

本質: 選擇產品簇的實現

c++**:

//抽象工廠模式

#includeusing namespace std;

class producta

簡單工廠模式 工廠方法模式 抽象工廠模式

b 簡單工廠模式又稱靜態工廠模式 b 下面看 示例 public inte ce robot public class factory catch exception e return null public class test class robota implements robot clas...

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

簡介 工廠方法模式分為 簡單工廠模式 工廠方法模式 抽象工廠方法模式 簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法 static factory method 模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的實 uml圖示例 public class ...

工廠模式(簡單工廠 工廠方法 抽象工廠)

二 工廠方法 三 抽象工廠 以下內容通過生產小公尺和華為手機 電腦 的例子實現 uml圖 phone介面 abstractproduct public inte ce phone miphone product1 public class miphone implements phone overr...