簡單工廠模式

2021-08-03 06:17:14 字數 2296 閱讀 1895

簡單工廠模式就是工廠物件根據傳入的引數,動態的決定建立哪一種產品類的例項,而這些產品類繼承自乙個父類或乙個介面。

簡單工廠模式屬於建立型模式,又叫做靜態工廠方法(static factory method)。但是它並沒有歸為23種gof設計模式其中。

簡單工廠模式是由工廠物件來決定建立哪一種產品類的例項

簡單說就是工廠物件根據傳入的引數,動態的決定建立哪一種產品類的例項,而這些產品類繼承自乙個父類或乙個介面。

簡單工廠模式的乙個基本的uml類圖如下所示:

在這個uml類圖中包含以下角色:

工廠(factory)

這是簡單工廠模式的核心,由它來負責實現建立所有例項的邏輯。工廠物件用來被外界呼叫,根據傳入的引數來決定建立哪乙個產品物件。

抽象產品(abstract product)

抽象類或介面。是所有具體產品物件的父類,由它來定義所有具體產品的公共介面。

具體產品(concrete product)

具體產品是簡單工廠模式的建立目標,所有建立的物件都是某個具體產品類的例項。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

public

inte***ce

product

public

class

producta

implements

product

}

public

class

productb

implements

product

}

public

class

factory

if (

"producta".equals(productname))

else

if (

"productb".equals(productname))

return

null;

}

}

public

class

main

}

輸出結果:

1

2

producta function ...

productb function ...

客戶類和工廠類分開。消費者任何時候需要某種產品,只需向工廠請求即可。消費者無須修改就可以接納新產品。

外界不用關注物件建立邏輯,產品物件具體的建立過程由工廠來實現。外界直接給定資訊來決定建立哪個產品物件。

明確了各自的職責,有利於整個軟體體系結構的優化。

違反高內聚責任分配原則,將所有的建立邏輯都集中在了工廠類身上。

如果需要新增新的產品類,則需要修改工廠類。

當產品類不斷增多,工廠類對產品型別的判斷條件過多交織在了一起,會造成邏輯過於複雜,對系統的擴充套件和維護不利。

工廠類建立的產品物件比較少。

外界只需要傳入工廠類引數來獲得產品物件,對於產品物件的建立過程不關心。

簡單工廠模式很容易違反高內聚責任分配原則,所以只是在一些很簡單的情況下使用。

由於這個壓縮包解壓方式並不多,判斷邏輯並不太複雜,所以也沒必要用工廠方法模式,增加**複雜度。

工廠模式 簡單工廠

簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫bbk 必敗客 披薩,賣很多種披薩 芝士披薩 榴蓮披薩等等,我有乙個orderpizza string type 方法,根據客戶傳來的type來提供不同的披...

工廠模式 簡單工廠

工廠 處理建立物件的細節。目的 將例項化具體類的 從應用中抽離,或者封裝起來,可以避免干擾應用的其他部分。簡單工廠 簡單工廠其實不是乙個設計模式,反而像一種程式設計習慣。產品實現 desc 產品a public inte ce a class a1 implements a override pub...

簡單工廠模式,工廠模式,抽象工廠模式

三種模式看了一天,記錄下自己的理解 headfirst,比薩店為例 1,簡單工廠模式 乙個具體的工廠類 pizzafactory 乙個抽象的產品類pizza,可以派生出多個具體的產品類 客戶 pizzastore類 工廠類 pizzafactory類關聯產品類pizza,工廠生產出不同型別的pizz...