簡單工廠模式就是工廠物件根據傳入的引數,動態的決定建立哪一種產品類的例項,而這些產品類繼承自乙個父類或乙個介面。
簡單工廠模式屬於建立型模式,又叫做靜態工廠方法(static factory method)。但是它並沒有歸為23種gof設計模式其中。
簡單工廠模式是由工廠物件來決定建立哪一種產品類的例項。簡單說就是工廠物件根據傳入的引數,動態的決定建立哪一種產品類的例項,而這些產品類繼承自乙個父類或乙個介面。
簡單工廠模式的乙個基本的uml類圖如下所示:
在這個uml類圖中包含以下角色:
工廠(factory)
這是簡單工廠模式的核心,由它來負責實現建立所有例項的邏輯。工廠物件用來被外界呼叫,根據傳入的引數來決定建立哪乙個產品物件。
抽象產品(abstract product)
抽象類或介面。是所有具體產品物件的父類,由它來定義所有具體產品的公共介面。
具體產品(concrete product)
具體產品是簡單工廠模式的建立目標,所有建立的物件都是某個具體產品類的例項。
12
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
}
12
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...