一言以蔽之,工廠方法建立乙個物件,抽象工廠建立一系列相關的物件。抽象工廠的實現基於工廠方法。
拿乙個汽車工廠舉例吧:
汽車是一種產品,我們要生產出汽車,可以使用工廠方法模式。但這裡有乙個問題,汽車不是憑空捏出來的,而是用輪胎、發動機、外殼等各種零件組裝起來的,汽車和零件的關係如下:
n 組裝 1
零件 ——————————> 汽車
如圖,汽車和零件的關係是1:n,有人說,既然用工廠方法可以生產出汽車,當然也可以用工廠方法生產出零件。
誠然,技術上,用 1+n 個工廠方法生產出所有的汽車和零件是當然是可以的。但現實中,分工越來越細,依靠乙個工廠生產出所有的產品是不可能的,那只會大大削弱工廠的核心競爭力。**世界也是如此,如果通過乙個方法建立出所有的零件並組裝成汽車,那麼這樣的**的可維護性、擴充套件性、重用性都將受到限制。
那麼,汽車工廠的核心競爭力是什麼?當然就是汽車!因為他不是輪胎工廠或者其他什麼工廠,所以,汽車工廠就要專注於汽車的生產!那零部件怎麼辦呢?丟給另乙個工廠吧——抽象工廠,讓他去組織生產出所有的和汽車相關的零部件。然後,不同的抽象工廠(子類)就會按照需求組織一幫零部件工廠再使用工廠方法生產出零部件。
所以,工廠方法專注於最終產品的生產,只建立乙個物件;而抽象工廠則專注於一系列相關物件的建立。
工廠方法和抽象工廠
csdn沒有在移動上布網,最近移動校園網登不上csdn,今天終於能登上了,小草鳥就寫下最近在學的設計模式。工廠估計也差不多是用的最多的了,對於工廠方法和抽象工廠比較容易混,筆者在這裡說下自己的學習的一些理解。工廠模式 產品對於工廠,當然是生產產品的了,當然我們得有產品類,為了擴充套件性良好,先定義乙...
抽象工廠和工廠方法
工廠方法模式 乙個抽象產品類,可以派生出多個具體產品類。乙個抽象工廠類,可以派生出多個具體工廠類。每個具體工廠類只能建立乙個具體產品類的例項。抽象工廠模式 多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。乙個抽象工廠類,可以派生出多個具體工廠類。每個具體工廠類可以建立多個具體產品類的例項。區...
簡單工廠方法,工廠方法,抽象工廠方法
以大話設計模式計算器為例 簡單工廠方法是由具體執行功能類,工廠類,客戶端構成,工廠類有case語句,負責建立不同的類,客戶端呼叫工廠類裡面的工廠方法,工廠類的工廠方法根據客戶端傳進去的引數new相應的類的物件返回給客戶端,客戶端得到返回的物件用該物件初始化該物件的成員變數最後呼叫該物件的方法執行計算...