簡單工廠和工廠方法以及抽象工廠模式

工廠模式:定義一個用於建立對象的接口,讓子類決定實例化哪個類設計模式

抽象工廠模式:爲建立一組相關或相互依賴的對象提供一個接口,並且無需指定他們的具體類spa

       我的以爲這個區別在於產品,若是產品單一,最合適用工廠模式,可是若是有多個業務品種、業務分類時,經過抽象工廠模式產生須要的對象是一種很是好的解決方 式。再通俗深化理解下:工廠模式針對的是一個產品等級結構 ,抽象工廠模式針對的是面向多個產品等級結構的。.net

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

 

工廠方法模式對象

抽象工廠模式接口

針對的是一個產品等級結構 針對的是面向多個產品等級結構
一個抽象產品類 多個抽象產品類
能夠派生出多個具體產品類 每一個抽象產品類能夠派生出多個具體產品類
一個抽象工廠類,能夠派生出多個具體工廠類 一個抽象工廠類,能夠派生出多個具體工廠類
每一個具體工廠類只能建立一個具體產品類的實例 每一個具體工廠類能夠建立多個具體產品類的實例


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

1

 1 1    上面的UML圖很明顯的就看出來了,抽象工廠能夠建立多個產品類對象,如在種菜工廠中,有種根菜,種莖菜。工廠模式與抽象工廠模式以及簡單工廠模式只有在具體應用的時候,分析具體的產品層級,而後選擇相應的設計模式。get

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

相關文章
相關標籤/搜索