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

2021-09-09 04:07:18 字數 1959 閱讀 4721

之前寫的模式帖子:

設計模式系列目錄

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

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

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

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

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

我們來看一下**

#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 工廠類

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

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

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

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

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

工廠方法模式:

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

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

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

抽象工廠模式:

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

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

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

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

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

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

在業務邏輯中往往有需要建立物件的需求 如何將這部分邏輯封裝並且使得其能個適應於頻繁的變化呢?簡單工廠模式 將物件建立邏輯封裝隔離在簡單工廠類的方法中。簡單工廠的常見實現方式 1 簡單工廠類以及其建立物件的靜態方法 其客戶可以直接呼叫該類的靜態方法。2 簡單工廠類以及其建立物件的成員方法 其客戶 需要...

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

最近擠了擠時間出來看了下設計模式,汗!總算來總結點東東了,最近專案忙得暈頭轉向了啊t.t好了言歸正傳,開始總結。理論定義來一套 設計模式 design patterns 是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。使用設計模式是為了可重用 讓 更容易被他人理解 保證 可靠性。設計...

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

1 工廠方法模式 factory method 定義乙個用於建立物件的介面,讓子類決定例項化哪個類。工廠方法使乙個類的例項化延遲到其子類。正如建立交通工具,可以通過不同的工廠方法建立所需的物件。類圖 對比 1 工廠方法在產品維度,即類圖中movable方向拓展比較方便,只需增加對應的類及相應的工廠方...