首頁  >  文章  >  Java  >  java工廠模式

java工廠模式

高洛峰
高洛峰原創
2016-12-15 13:51:351717瀏覽

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

簡單工廠模式(Simple Factory Pattern)屬於類別的創新模式,又叫靜態工廠方法模式(Static FactoryMethod Pattern),是透過專門定義一個類別來負責創建其他類別的實例,被創建的實例通常都具有共同的父類。

簡單工廠模式就是透過一個"全能類",根據外界傳遞的訊息來決定創建哪個具體類別的物件。如下圖

java工廠模式

透過一個簡單工廠類,根據name建立對應的產品物件。

 

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

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

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

工廠方法模式使用場景:

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

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

java工廠模式

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

java工廠模式

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

java工廠模式

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

java工廠模式

java工廠模式

LB手機銷售很火,在全國各地都有了組裝廠。有一天LB手機的螢幕突然要進行更換了,從TFT顯示器變更成UFT顯示器。牽一發而動全身,這時候就體現了工廠方法模式的好處。無論LB手機的配置如何變更,對於組裝廠來說,createDisplay()介面依然不變。這樣只需要原料工廠的顯示器從提供TFT顯示器更換為UFT顯示器就行。

工廠模式的好處就在於提供創建的產品介面給使用者就行,無論產品的類型如何變化,只要根據介面創建的產品的功能沒有變化,使用者就無須做任何變動。

很多介紹工廠方法模式的都是將工廠模式的用法列出來,而並沒有具體介紹何時使用。初看時覺得工廠方法模式屬於多餘,增加了繁雜性,後來慢慢熟悉了工廠方法模式的用處,又重新翻閱了一遍《Head First Design Patterns》鞏固一下。特模擬一個場景結合理論記錄下來,希望能鞏固理解。



更多java工廠模式相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn