設計模式 設計模式之工廠模式

2021-06-21 16:35:23 字數 2104 閱讀 8485

工廠方法模式->

建立模式 

使用場景?

作用?

**形態?

場景: 大量類似的實體類;要建立的實體類都是同一本質的東西(披薩);有部分類似功能(準備、烘烤、切法);實現方式不一樣(準備的材料不同、烘烤時間不同、切法不同);將繁瑣複雜的建立類的過程聚集在一起,有序清晰;把具體例項化的過程從客戶**中抽離;

作用:

1、將建立物件的**集中在一起,便於管理(工廠類中建立類的方法)

2、依賴介面,而不是具體類(披薩抽象類)

3、針對介面程式設計,而不是針對實現程式設計(披薩抽象類、建立者基類)

簡單工廠方法模式 又稱靜態工廠方法模式; 

簡單工廠模式中的工廠類處於對產品類例項化呼叫的中心位置上,它決定那乙個產品類應當被例項化

簡單工廠方法模式,分由3部分組成:工廠類,抽象產品,具體產品。

工廠定義成靜態方法:不需要建立物件的方法來例項化物件;不能通過繼承來改變建立方法的行為

工廠方法模式:

定義了乙個建立物件的介面,但由自子類決定要例項化的類是哪乙個,工廠方法讓類把例項化推遲到子類。

工廠方法模式由4部分組成:抽象工廠,具體工廠,抽象產品,具體產品

抽象工廠方法模式

提供乙個藉口, 用於建立相關或依賴物件的家族,而不是需要明確指定具體類。

我的理解:

日常場景:

在乙個蛋撻店(多種蛋撻提供、蛋撻製作步驟一樣,原料不一樣):

簡單工廠方法模式:

服務生接受客戶訂單(引數),【服務生根據(引數)自己做】,自己提供給客戶

工廠方法模式:

服務生接受客戶訂單

,【服務生根據

訂單交給專門製作此類蛋撻的師傅,師傅

製作蛋撻

,交給服務生】,

服務生提供給客戶

抽象工廠方法模式:

服務生接受客戶訂單

,【服務生根據

訂單交給專門製作此類蛋撻的師傅,師傅

製作蛋撻

,根據製作水果丁

,交給服務生】,

服務生提供給客戶

ps:產品族就是該蛋撻的一系列,加不加水果丁,加不加其他配料
簡單工廠與工廠方法之間的區別:

1.簡單工廠是一種has-a的關係,所有的產口是由店鋪中的乙個工廠成員所建立的。而工廠方法是一種is-a的關係,它把建立產品的事情留給了工廠方法的子類去決定如何建立。

2. 簡單工廠把全部的事情,在乙個地方都處理完了,然而工廠方法卻是建立乙個框架,讓子類決定要如何實現。

3. 簡單工廠的做法,可以將物件的建立封裝起來,但是簡單工廠不具備工廠方法的彈性,因為簡單工廠不能變更正在建立的產品。

抽象工廠模式與工廠方法模式的區別

抽象工廠模式是工廠方法模式的公升級版本,他用來建立一組相關或者相互依賴的物件。他與工廠方法模式的區別就在於,工廠方法模式針對的是乙個產品等級結構;而抽象工廠模式則是針對的多個產品等級結構。在程式設計中,通常乙個產品結構,表現為乙個介面或者抽象類,也就是說,工廠方法模式提供的所有產品都是衍生自同乙個介面或抽象類,而抽象工廠模式所提供的產品則是衍生自不同的介面或抽象類。

設計模式之工廠模式

類圖分三層 第一層顯示類的名稱,如果是抽象類,就用斜體顯示,如果是介面,則類前面有乙個 表示。第二層類的屬性字段。第三層類的方法,前面的 表示public,表示private,表示protected,如 類之間關係 1 繼承 2 實現 用空心三角形加虛線表示,如 3 關聯 用實線箭頭表示,如 4 聚...

設計模式之 工廠模式

工廠模式分為 1 簡單工廠模式 2 工廠方法模式 3 抽象工廠模式 工廠模式定義 例項化物件,用工廠方法代替new操作。我們在專案中,經常要new乙個物件出來使用,可是當專案內容越來越豐富,需要進行很多new操作,new操作分布在 的不同地方,管理起來很麻煩,而且也很亂,到後期擴充套件和維護的時候,...

設計模式之 工廠模式

1.概念 工廠方法 一抽象產品類派生出多個具體產品類 一抽象工廠類派生出多個具體工廠類 每個具體工廠類只能建立乙個具體產品類的例項。即定義乙個建立物件的介面 即抽象工廠類 讓其子類 具體工廠類 決定例項化哪乙個類 具體產品類 一對一 的關係。抽象工廠 多個抽象產品類,派生出多個具體產品類 乙個抽象工...