[Design Pattern] The Factory Pattern
作者:Flyingis
工廠模式用于創(chuàng)建實(shí)例對(duì)象,我們只需告訴工廠需要的對(duì)象有什么特點(diǎn),就能得到所需的結(jié)果,而不用去關(guān)心怎么創(chuàng)建對(duì)象,工廠類(lèi)似于黑盒,黑盒里面關(guān)于對(duì)象生產(chǎn)的細(xì)節(jié)不是關(guān)注的重點(diǎn)。
工廠模式分為:簡(jiǎn)單工廠模式、工廠模式、抽象工廠模式。
例子:Thinkpad筆記本生產(chǎn)線。
簡(jiǎn)單工廠模式








































從上例可以看出,SimpleThinkpadTFactory只需知道用戶需要什么型號(hào)的Thinkpad T系列的電腦,就能返回該型號(hào)Thinkpad的對(duì)象,避免了在ThinkpadTStore中書(shū)寫(xiě)冗長(zhǎng)的代碼,降低了代碼的耦合度。但是在SimpleThinkpadTFactory中,一旦機(jī)器的型號(hào)分的特別細(xì)、特別多,如T42/T43/T60/T42p/T43p/T60p等等,就需要維護(hù)大量的"if else",這顯然不是我們想看到的,這里我們引入工廠模式。
工廠模式

















































具體執(zhí)行代碼:
















這樣就將不同型號(hào)T系列筆記本的生產(chǎn)進(jìn)行了更細(xì)的劃分,降低了簡(jiǎn)單工廠中工廠類(lèi)的耦合程度,抽取出來(lái)的各種Store只用關(guān)心一種型號(hào)筆記本的生產(chǎn),如T43或T60。
工廠模式的抽象結(jié)構(gòu)圖可以表示如下:
(上圖摘自Head First Patterns)
抽象工廠模式
什么時(shí)候需要使用抽象工廠模式呢?抽象工廠模式用戶生產(chǎn)線更復(fù)雜的情況下,例如現(xiàn)在除了T系列的Thinkpad筆記本,我們還需要生產(chǎn)R系列和X系列的產(chǎn)品,這時(shí)就需要更多的工廠來(lái)負(fù)責(zé)不同系列Thinkpad的生產(chǎn)。
(上圖摘自呂震宇的博客)
有兩篇文章對(duì)于抽象工廠模式闡述的非常好:
白話設(shè)計(jì)模式--Abstract Factory
C#設(shè)計(jì)模式(6)--Abstract Factory Pattern
posted on 2007-06-17 15:01 Flyingis 閱讀(3645) 評(píng)論(2) 編輯 收藏 所屬分類(lèi): 架構(gòu)與設(shè)計(jì)