前面我們介紹了簡單工廠,工廠方法模式,這節來看看抽象工廠模式,
抽象工廠模式(abstract factory)
是工廠方法裡面最為抽象和最具一般性的形態,是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客戶端提供乙個介面,使客戶端在不必指定產品的具體的情況下,建立多個產品族中的產品物件。抽象工廠模式和工廠方法模式的最大區別在於,工廠方法模式針對的是乙個產品等級結構;而抽象工廠模式則需要面對多個產品族,從而使得產品具有二維性質。抽象工廠模式的一般示意類圖如下:
下面我們先看抽象工廠的角色都有哪些:
抽象工廠(creator)角色:是抽象工廠模式的核心,與應用程式無關。任何在模式中建立的物件的工廠類必須實現這個介面。
具體工廠(concrete creator)角色:這是實現抽象工廠介面的具體工廠類,包含與應用程式密切相關的邏輯,並且受到應用程式呼叫以建立產品物件。
抽象產品(product)角色:工廠方法模式所建立的物件的超型別,也就是產品物件的共同父類或共同擁有的介面。
具體產品(concrete product)角色:這個角色實現了抽象產品角色所定義的介面。某具體產品有專門的具體工廠建立,它們之間往往一一對應。
如果你很留心,你就發現抽象工廠的角色和工廠方法的角色一樣,其實抽象工廠就是在工廠方法的基礎上進一步推廣。
下面我們來舉例項說明,我們還是延續車的例子,我們說我們原有的造車廠擴建,分東北重工廠和華北機械廠,這兩個廠都可以造拖拉機,汽車,火車,但是他們在工藝和品牌上都有所不同,我們抽象出以下模型:
java設計模式學習筆記 抽象工廠模式
抽象工廠模式 此模式提供了乙個介面,用於建立相關或者依賴物件的家族,而不需要指定具體的實現類。抽象工廠模式允許客戶使用抽象介面來建立一組相關的產品,客戶類和工廠類分開,客戶需要任何產品的時候,只需要向工 廠請求即可,客戶無須修改就可以獲得新產品。這樣一來,客 戶就從具體產品中解耦。抽象工廠模式的um...
java設計模式 抽象工廠模式
1.概念 設計模式 一書中對於抽象工廠模式是這樣定義的 提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。產品 plant介面 public inte ce plant 標誌介面 具體產品planta,plantb public class planta implements pl...
JAVA設計模式 抽象工廠模式
目錄 一 什麼是抽象工廠模式 二 模式中包含的角色及其職責 三 抽象工廠模式的優缺點 抽象工廠模式是所有形態的工廠模式中最為抽象和最具一般性的。抽象工廠模式可以向客戶端提供乙個介面,使得客戶端在不必指定產品的具體型別的情況下,能夠建立多個產品族的產品物件。抽象工廠 factory 角色 抽象工廠模式...