作者:Flyingis 工廠模式用于創建實例對象,我們只需告訴工廠需要的對象有什么特點,就能得到所需的結果,而不用去關心怎么創建對象,工廠類似于黑盒,黑盒里面關于對象生產的細節不是關注的重點。 工廠模式分為:簡單工廠模式、工廠模式、抽象工廠模式。 例子:Thinkpad筆記本生產線。 簡單工廠模式
從上例可以看出,SimpleThinkpadTFactory只需知道用戶需要什么型號的Thinkpad T系列的電腦,就能返回該型號Thinkpad的對象,避免了在ThinkpadTStore中書寫冗長的代碼,降低了代碼的耦合度。但是在SimpleThinkpadTFactory中,一旦機器的型號分的特別細、特別多,如T42/T43/T60/T42p/T43p/T60p等等,就需要維護大量的"if else",這顯然不是我們想看到的,這里我們引入工廠模式。 工廠模式
具體執行代碼:
這樣就將不同型號T系列筆記本的生產進行了更細的劃分,降低了簡單工廠中工廠類的耦合程度,抽取出來的各種Store只用關心一種型號筆記本的生產,如T43或T60。 工廠模式的抽象結構圖可以表示如下: (上圖摘自Head First Patterns) 抽象工廠模式 什么時候需要使用抽象工廠模式呢?抽象工廠模式用戶生產線更復雜的情況下,例如現在除了T系列的Thinkpad筆記本,我們還需要生產R系列和X系列的產品,這時就需要更多的工廠來負責不同系列Thinkpad的生產。 (上圖摘自呂震宇的博客) 有兩篇文章對于抽象工廠模式闡述的非常好: 白話設計模式--Abstract Factory C#設計模式(6)--Abstract Factory Pattern
posted on 2007-06-17 15:01 Flyingis 閱讀(3638) 評論(2) 編輯 收藏 所屬分類: 架構與設計
Powered by: BlogJava Copyright © Flyingis
Flyingis博客空間內所有文章除特別聲明為[轉載],均為作者的學習心得和原創作品。如要轉載,請注明作者名flyingis及原文地址