對於抽象工廠設計模式的理解

2021-08-15 15:31:31 字數 1055 閱讀 6058

抽象工廠中的兩個概念:

產品等級結構

產品族

以海爾和海信兩個公司為例,兩個公司都生產電視機,那末海爾電視機海信電視機就是乙個產品等級結構,而海爾電視機海爾電冰箱就是乙個產品族。因此可以理解為海爾家的所有產品例如海爾電視機、海爾電冰箱等構成乙個產品族,海爾公司看作是乙個具體工廠。

另外說明抽象工廠模式對於增加新的產品族方便,增加新的產品登記結構麻煩,有的也說橫向擴充套件容易,縱向拓展麻煩,根據上面的示例圖也容易理解。

一般來說,乙個產品等級結構都繼承自乙個公共的抽象類或實現乙個公共介面,增加乙個產品族時(看作新成立了一家公司:)),則只需要增加新的產品類和對應的具體工廠類即可;另一種情況是對著技術的發展市面上的洗衣機創新出了新的功能,如半自動洗衣機向全自動洗衣機換代,因此每個公司都將自己的洗衣機公升級,此時的洗衣機功能也有所增加,在此模式下,就需要更改頂層的抽象類或介面,在其中新增新的方法,則所有的實現類也要做相應的修改,違背了」開閉原則」。

在以下情況下可以考慮使用抽象工廠模式:

(1)乙個系統不應當依賴於產品類例項如何被建立、組合和表達的細節,這對於所有型別的工廠模式都是很重要的,使用者無須關心物件的建立過程,將物件的建立和使用解耦。

(2)系統中有多於乙個的產品族,而每次只使用其中某一產品族。可以通過配置檔案等方式來使得使用者可以動態改變產品族,也可以很方便地增加新的產品族。

(3)屬於同乙個產品族的產品將在一起使用,這一約束必須在系統的設計中體現出來。同乙個產品族中的產品可以是沒有任何關係的物件,但是它們都具有一些共同的約束,如同一作業系統下的按鈕和文字框,按鈕與文字框之間沒有直接關係,但它們都是屬於某一作業系統的,此時具有乙個共同的約束條件:作業系統的型別。

(4)產品等級結構穩定,設計完成之後,不會向系統中增加新的產品等級結構或者刪除已有的產品等級結構。

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

一 簡單工廠模式 定義 專門定義乙個類用來負責建立其他類的例項,被建立的類通常具有共同的父類 沒有也行 產品類 public inte ce product 繼承產品的子類a產品 public class producta implements product 繼承產品的子類b產品 public c...

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

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

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

提供乙個為建立一組相關或相互依賴物件的介面,且無須指定它們的具體類。它屬於建立型模式。在抽象工廠模式中,每個具體工廠都提供了多個用於建立多種不同型別具體物件的方法,這些不同型別的物件都存在乙個共同的屬性,構成乙個族。上篇文章設計模式 八 工廠方法模式說到工廠方法模式中只考慮某一類產品的生產,例如可樂...