抽象工廠模式

2021-06-25 17:56:41 字數 968 閱讀 3128

前面我們介紹了簡單工廠,工廠方法模式,這節來看看抽象工廠模式,抽象工廠模式(abstract factory)是工廠方法裡面最為抽象和最具一般性的形態,是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客戶端提供乙個介面,使客戶端在不必指定產品的具體的情況下,

建立多個產品族中的產品物件

。抽象工廠模式和工廠方法模式的最大區別在於,

工廠方法模式針對的是乙個產品等級結構;而抽象工廠模式則需要面對多個產品族,從而使得產品具有二維性質。

抽象工廠模式的一般示意類圖如下:

下面我們先看抽象工廠的角色都有哪些:

抽象工廠(creator)角色:是抽象工廠模式的核心,與應用程式無關。任何在模式中建立的物件的工廠類必須實現這個介面。

具體工廠(concrete creator)角色:這是實現抽象工廠介面的具體工廠類,包含與應用程式密切相關的邏輯,並且受到應用程式呼叫以建立產品物件。

抽象產品(product)角色:工廠方法模式所建立的物件的超型別,也就是產品物件的共同父類或共同擁有的介面。

具體產品(concrete product)角色:這個角色實現了抽象產品角色所定義的介面。某具體產品有專門的具體工廠建立,它們之間往往一一對應。

如果你很留心,你就發現

抽象工廠的角色和工廠方法的角色一樣,其實抽象工廠就是在工廠方法的基礎上進一步推廣。

下面我們來舉例項說明,我們還是延續車的例子,我們說我們原有的造車廠擴建,分東北重工廠和華北機械廠,這兩個廠都可以造拖拉機,汽車,火車,但是他們在工藝和品牌上都有所不同,我們抽象出以下模型:

通過上圖,我們可以看出,我們系統模型中有個兩個產品族,乙個產品族是東北重工廠產出的所有產品,另乙個產品族是華北機械廠生產出的所有產品。我們也可以看出有多少個實現工廠就有多少個產品族,在工廠角色中有多少工廠方法在同乙個產品族類就有多少個具體產品。 

抽象工廠模式 抽象工廠模式

抽象工廠模式其實是圍繞了乙個超級工廠建立其他的工廠 可參考工廠模式 這個超級工廠又可以想像成是其他工廠的工廠,這種設計模式是一種建立型模式。在抽象工廠模式中,介面是負責建立乙個相關物件的工廠,不需要顯式指出其類。每個生成的工廠都能按照工廠模式提供物件。意圖提供乙個建立一系列相關或相互依賴物件的介面,...

工廠模式 抽象工廠模式

這裡使用簡單的話來講解工廠模式,不涉及程式設計 什麼是工廠模式呢?我的理解是對抽象介面例項的封裝。假如有乙個介面,有若干的實現類,代表不同的例項。傳統產生物件的方法是直接new乙個出來,對於每個例項都要new,當實現介面的類較多時會很麻煩,並且類的實現也暴露出來了。工廠模式是一種產生物件的模式,使用...

工廠模式 抽象工廠模式

子類父類代換 場景 在不同的條件下,需要建立不同的實現子類時。如網路通訊可以使用tcp udp。可以實現同乙個介面,通過工廠類根據條件 tcp或udp 來例項化不同的子類。這些子類符合黎克特制代換原則。public inte ce tlprotocol public class tcpimpleme...