天道不一定酬所有勤
但是,天道只酬勤

設計模式(八)——工廠模式總結

開發十年,就只剩下這套架構體系了??!

新專題:設計模式,我會在博客(http://www.057299.live)及微信公眾號(hollischuang)同步更新,歡迎共同學習。

在本專題的前幾篇文章中介紹了簡單工廠模式、工廠方法模式以及抽象工廠模式。本文將會在前面幾篇文章的基礎上,總結下三種工廠模式的區別及聯系。一方面是回顧下之前的內容,另外一方面是再次加深對工廠模式的理解。

分類

工廠模式主要是為創建對象提供過渡接口,以便將創建對象的具體過程屏蔽隔離起來,達到提高靈活性的目的。

工廠模式可以分為三類:

1)簡單工廠模式(Simple Factory)

2)工廠方法模式(Factory Method)

3)抽象工廠模式(Abstract Factory)

這三種模式從上到下逐步抽象,并且更具一般性。

GOF在《設計模式》一書中將工廠模式分為兩類:工廠方法模式(Factory Method)與抽象工廠模式(Abstract Factory)。

簡單工廠模式(Simple Factory)看為工廠方法模式的一種特例,兩者歸為一類。

創建型模式

前面介紹過的三種工廠模式在設計模式的分類中都屬于創建型模式。

創建型模式(Creational Pattern)對類的實例化過程進行了抽象,能夠將軟件模塊中對象的創建和對象的使用分離。為了使軟件的結構更加清晰,外界對于這些對象只需要知道它們共同的接口,而不清楚其具體的實現細節,使整個系統的設計更加符合單一職責原則。

創建型模式在創建什么(What),由誰創建(Who),何時創建(When)等方面都為軟件設計者提供了盡可能大的靈活性。創建型模式隱藏了類的實例的創建細節,通過隱藏對象如何被創建和組合在一起達到使整個系統獨立的目的。

工廠模式的優點

工廠模式是創建型模式中比較重要的。

工廠模式的主要功能就是幫助我們實例化對象的。之所以名字中包含工廠模式四個字,是因為對象的實例化過程是通過工廠實現的,是用工廠代替new操作的。

這樣做的好處是封裝了對象的實例化細節,尤其是對于實例化較復雜或者對象的生命周期應該集中管理的情況。會給你系統帶來更大的可擴展性和盡量少的修改量。

三種工廠模式之間的演化與區別

factory

簡單工廠 : 用來生產同一等級結構中的任意產品。(對于增加新的產品,主要是新增產品,就要修改工廠類。符合單一職責原則。不符合開放-封閉原則)

工廠方法 :用來生產同一等級結構中的固定產品。(支持增加任意產品,新增產品時不需要更改已有的工廠,需要增加該產品對應的工廠。符合單一職責原則、符合開放-封閉原則。但是引入了復雜性)

抽象工廠 :用來生產不同產品族的全部產品。(增加新產品時,需要修改工廠,增加產品族時,需要增加工廠。符合單一職責原則,部分符合開放-封閉原則,降低了復雜性)

參考資料

工廠模式

JAVA設計模式之工廠模式

(全文完) 歡迎關注『Java之道』微信公眾號
贊(1)
如未加特殊說明,此網站文章均為原創,轉載必須注明出處。HollisChuang's Blog » 設計模式(八)——工廠模式總結
分享到: 更多 (0)

評論 搶沙發

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址

HollisChuang's Blog

聯系我關于我
大乐透复式返奖 江苏11选5前三组 11选5中奖号码走势图 11选5黄金一胆 大富翁4fun安卓版下载 四肖期期谁三肖必中特 云南体育彩票11选五走势图 2019平特肖规律网址 安徽快3官方平台 二四六天天好彩精彩资料 广东11选五乐选五玩法