設計模式(七)抽象工廠模式

2021-07-23 11:04:16 字數 1066 閱讀 6623

抽象工廠模式:

kit模式,提供乙個建立一系列相關或者相互依賴物件的介面,而無需指定它們具體的類。

和工廠方法模式不同的是,抽象工廠模式的工廠方法建立的是乙個產品族,每乙個產品都位於某個產品等級結構中。

同樣,4個角色:

(1)abstractfactory抽象工廠:宣告了一組用於建立一族產品的方法,每個方法對應一種產品。

(2)concretefactory具體工廠:實現了在抽象工廠中宣告的建立產品的方法,生成一組具體產品(不是乙個產品物件例項),構成乙個產品族。

(3)abstractproduct抽象產品:為每種產品宣告介面,抽象產品中宣告了產品所具有的業務方法;

(4)concreteproduct具體產品:定義了具體工廠生產的具體產品物件,實現在抽象產品介面中宣告的業務方法。

什麼是產品族:比如相同顏色的正方形、矩形、三角形是乙個產品族,不同顏色的正方形是乙個產品等級結構,每乙個顏色的形狀物件都位於某個產品族,並屬於某個產品等級結構。在抽象工廠模式,產品族是指有同乙個工廠生產的,位於不同產品等級結構的一組產品,比如海爾電器工廠生產的海爾電視機、海爾電冰箱,海爾電視機位於電視機產品等級結構中,海爾電冰箱位於電冰箱產品等級結構中,海爾電視機、電冰箱構成了乙個產品族。

總結:1.優點

(1)隔離了具體類的生產,使得客戶不需要知道什麼被建立。只需要改變具體工廠的例項,就可以改變系統的行為。

(2)當乙個產品族的多個物件被設計成一起工作時,能保證客戶端始終只使用同乙個產品族的物件。

(3)增加新的產品族很方便,無需修改已有系統,符合開閉原則。

2.缺點

(1)增加新的產品等級結構很麻煩,需要對原有系統進行較大修改,甚至修改抽象層**,不符合開閉原則。

3.適用場景

(1)乙個系統不依賴於產品類例項如何被建立、組合和表達的細節。

(2)系統有多於乙個的產品族,每次只使用其中某乙個產品族。

(3)屬於同乙個產品族的產品將在一起使用。

(4)產品等級結構穩定。

設計模式(七) 抽象工廠模式

抽象工廠模式相對於工廠方法模式進行了一些改進,使得增加新的型別的時候,不用修改工廠類,只要增加乙個新的實現類,符合 開閉原則。傳送資訊介面public inte ce sender傳送簡訊和郵件的實現類public class sendmsg implements sender public cla...

設計模式 工廠模式 抽象工廠模式

建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...

抽象工廠模式 常用設計模式 抽象工廠模式

提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。在工廠方法模式中,我們的具體建立者每次使用都只能建立乙個同型別的物件,假如我們現在需要的是多個不同型別的物件,工廠方法就滿足不了需求了。這時我們可以把多個工廠方法組合到乙個類,這就是抽象工廠模式,它就是專門用來建立多個產品,也可以說...