抽象工廠模式 與 工廠方法模式區別

2021-08-05 22:55:09 字數 945 閱讀 2640

首先來看看這兩者的定義區別:

工廠模式:定義乙個用於建立物件的藉口,讓子類決定例項化哪乙個類

抽象工廠模式:為建立一組相關或相互依賴的物件提供乙個介面,而且無需指定他們的具體類

個人覺得這個區別在於產品,如果產品單一,最合適用工廠模式,但是如果有多個業務品種、業務分類時,通過抽象工廠模式產生需要的物件是一種非常好的解決方式。再通俗深化理解下:工廠模式針對的是乙個產品等級結構 ,抽象工廠模式針對的是面向多個產品等級結構的。

再來看看工廠方法模式與抽象工廠模式對比:

工廠方法模式

抽象工廠模式

針對的是乙個產品等級結構

針對的是面向多個產品等級結構

乙個抽象產品類

多個抽象產品類

可以派生出多個具體產品類

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

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

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

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

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

舉個例子說明下:

用種蔬菜的例子來說明事實,最初的時候,由於規模小,只種植一種蔬菜,根菜類蔬菜,這個時候由於種植方式比較簡單,採用簡單工廠模式即可,主要目的是讓工人輕鬆,下達工廠種植即可,但是隨著種植廠的發展以及市場的需求,要增加一種蔬菜型別種植了,莖菜,由於莖菜與根菜種植方式不一致,就需要兩個專門的種植工廠來進行管理,那麼久採用工廠模式來管理,乙個工廠負責一種作物的種植,這個時候產品可以理解為仍然在乙個層次。但是隨著科技的發展,我們逐步要種植轉基因與非轉基因食品了,在以前的蔬菜種類上又增加了乙個層次,這個時候無法將其作為乙個層次來解決,所以必須採用抽象工廠的方式來解決。我用uml圖表示三種結構:

而在沒乙個層次,種菜工人所關心的物件也不一樣,在簡單工廠模式下,工人要想到種植蘿蔔還是白菜,在工廠模式下,工人想到是種植根菜還是莖菜,而在抽象工廠模式下,則關心種植基因菜還是非基因菜

抽象工廠模式與工廠方法模式的區別

在進行重新學習設計模式的時候,感覺兩種設計模式有很多地方很相似,但一時也不好區別。很頭疼。通過以前的學習,對兩個模式的區別進行了彙總,保證是最全的區別 1 定義 工廠方法模式 定義使用者建立物件的介面,讓子類決定例項化那乙個類。2 職能分析 工廠方法模式 核心工廠類不負責所有產品的建立,而是將具體建...

工廠方法模式與抽象工廠模式的區別

工廠方法模式 與 抽象工廠模式的區別 前言 很多程式設計師分不清楚幾個工廠模式 簡單工廠模式 工廠方法模式 抽象工廠模式 在前面的博文 工廠方法模式 中,我已經簡單說明了簡單工廠模式與工廠方法模式的區別,這裡我簡單歸納說明一下工廠方法模式與抽象工廠模式的區別。這是我理解玩抽象工廠模式後的筆記。一 工...

工廠方法模式與抽象工廠模式

工廠方法 public inte ce product public inte ce creator public class concreteproduct1 implements product public class concreteproduct2 implements product p...