java工廠模式

 java工廠模式分三種:簡單工廠模式、工廠方法模式、抽象工廠模式。java

簡單工廠模式(Simple Factory Pattern)屬於類的創新型模式,又叫靜態工廠方法模式(Static FactoryMethod Pattern),是經過專門定義一個類來負責建立其餘類的實例,被建立的實例一般都具備共同的父類。spa

簡單工廠模式就是經過一個"全能類",根據外界傳遞的信息來決定建立哪一個具體類的對象。以下圖(懶得寫demo了,知乎上截了一個。):.net

經過一個簡單工廠類,根據name建立相應的產品對象。對象

關於簡單類如過還有不明白,更多的資料能夠參考http://blog.csdn.net/weiwenlongll/article/details/6918164。blog

 

簡單工廠模式嚴重違背了「開閉原則」,難以拓展,由此產生了工廠方法模式。接口

工廠方法模式(FACTORY METHOD)是對簡單工廠模式進行了抽象化,符合「開閉原則」,實現了可擴展。產品

工廠方法(Factory Method)模式的意義是定義一個建立產品對象的工廠接口,將實際建立工做推遲到子類當中。核心工廠類再也不負責產品的建立,這樣核心類成爲一個抽象工廠角色,僅負責具體工廠子類必須實現的接口,這樣進一步抽象化的好處是使得工廠方法模式能夠使系統在不修改具體工廠角色的狀況下引進新的產品。擴展

工廠方法模式使用場景:配置

如組裝手機的代工廠。從手機原料工廠獲取外殼、顯示屏、主板、按鍵、電池等配件進行組裝。組裝手機工廠只負責手機的裝配,而不負責配件的生產,也不須要關心從手機原料工廠出來的配件是否改變,只要手機各個配置銜接的接口不變就行。好比原料工廠顯示屏從TFT 的換成了UFB的顯示屏,對於組裝手機的代工廠來講,只要接口沒變,只須要繼續裝配就行。方法

以下圖,首先創建一個原料工廠接口,原料工廠接口分別定義了建立外殼、顯示屏、主板、電池的方法。

 LB手機原料工廠負責提供LB手機須要的配件,電池、TFT顯示屏、主板、皮革外殼。

 

 下面是手機裝配廠的接口,裝配廠只負責從原料工廠獲取配件並裝配成新的手機,其餘的概不負責。

 

 LB手機裝配廠,負責裝配LB原料工廠提供的配件。固然,偶爾也接接私活,裝配其它手機廠的手機。

 

 

 

LB手機銷量很火,在全國各地都有了裝配廠。有一天LB手機的屏幕忽然要進行更換了,從TFT顯示屏變動成UFT顯示屏。牽一髮而動全身,這時候就體現出了工廠方法模式的好處。不管LB手機的配置如何變動,對於裝配廠來講,createDisplay()接口依然不變。這樣只須要原材料工廠的顯示屏從提供TFT顯示屏更換爲UFT顯示屏就行。

工廠模式的好處就在於提供建立的產品接口給使用者就行,不管產品的類型如何變化,只要根據接口建立的產品的功能沒有變化,使用者就無須作任何變更。

不少介紹工廠方法模式的都是將工廠模式的用法列出來,而並無具體介紹什麼時候使用。初看時以爲工廠方法模式屬於多餘,增長了繁雜性,後來慢慢熟悉了工廠方法模式的用處,又從新翻閱了一遍《Head First Design Patterns》鞏固一下。特模擬一個場景結合理論記錄下來,但願能鞏固理解。

相關文章
相關標籤/搜索