抽象工廠方法模式

2021-07-12 07:42:23 字數 1993 閱讀 7693

今天說一下抽象工廠模式:提供乙個介面,用於建立相關或依賴物件的家族,而不需要明確指定具體類。

抽象工廠允許客戶使用抽象的介面來建立一組相關的產品,而不需要知道實際產出的具體產品是什麼,這樣一來,客戶就從具體的產品中被解耦

我之前說過設計模式:工廠方法模式,我們最後會做一下兩種模式的區別

我們看用類圖看一下這個模式

每個抽象產品都有多於乙個的乙個人的具體子類,工廠角色怎麼知道例項化哪乙個子類?比如我們這個圖,每個抽象產品都有兩個具體產品,

抽象工廠有兩個具體的工廠,分別對應這兩個具體產品角色,每乙個具體工廠只負責某乙個家族的產品的例項化

我們來看一下**

#region 抽象工廠模式

#region 產品

#region 產品a

/// /// 抽象產品a

///

public abstract class producta

public class concreteproducta1 : producta

}public class concreteproducta2 : producta

}#endregion

#region 產品b

/// /// 抽象產品b

///

public abstract class productb

public class concreteproductb1 : productb

}public class concreteproductb2 : productb

}#endregion

#endregion

#region 工廠類

抽象工廠模式除了具有工廠方法模式的做點外,主要就是可以在類的內部對產品族進行約束。所謂的產品族一般都有一定的聯絡,抽象工廠模式就可以

在類內部對產品族的關聯關係進行描述,而不必專門引入乙個新的類來進行管理。抽象模式最大的缺點就是產品族的擴充套件,如果要加乙個新的產品,差不多所有

的工廠類都需要進行修改,所以使用抽象工廠模式時,對產品等級結構的劃分是非常重要的。

這們來說乙個抽象工廠模式和工廠模式的區別:

我們看一下抽象模式的類圖:設計模式:工廠方法模式

工廠方法模式:

乙個抽象產品類,可以派生出多個具體產品類。 

乙個抽象工廠類,可以派生出多個具體工廠類。 

每個具體工廠類只能建立乙個具體產品類的例項。

抽象工廠模式:

多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。 

乙個抽象工廠類,可以派生出多個具體工廠類。 

每個具體工廠類可以建立多個具體產品類的例項。 

區別:工廠方法模式只有乙個抽象產品類,而抽象工廠模式有多個。 

工廠方法模式的具體工廠類只能建立乙個具體產品類的例項,而抽象工廠模式可以建立多個

抽象工廠模式(工廠方法模式)

工廠方法模式是在簡單工廠模式的基礎之上將建立具體產品類的工廠進一步抽象,使產品的建立不依賴具體的工廠,只需要依賴抽象工廠,後續如果要新增新的產品和工廠,只需要實現該抽象工廠的介面即可。建立抽象工廠和產品 public inte ce productfactory public inte ce pro...

抽象工廠方法模式

抽象工廠針對的是產品族,而不是產品 等級結構 include using namespace std 抽象蘋果 中國蘋果 美帝蘋果 倭國蘋果 抽象的香蕉 class abstractbanana 中國香蕉 class chinabanana public abstractbanana 美帝香蕉 cl...

設計模式 簡單工廠 工廠方法 抽象工廠方法模式

簡介 工廠方法模式分為 簡單工廠模式 工廠方法模式 抽象工廠方法模式 簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法 static factory method 模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的實 uml圖示例 public class ...