工廠方法模式:
乙個抽象產品類,可以派生出多個具體產品類。
乙個抽象工廠類,可以派生出多個具體工廠類。
每個具體工廠類只能建立乙個具體產品類的例項。
抽象工廠模式:
多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。
乙個抽象工廠類,可以派生出多個具體工廠類。
每個具體工廠類可以建立多個具體產品類的例項。
區別:工廠方法模式只有乙個抽象產品類,而抽象工廠模式有多個。
工廠方法模式的具體工廠類只能建立乙個具體產品類的例項,而抽象工廠模式可以建立多個。
設計模式的乙個重要原則就是:別改**,只需要添**,以前所有的老**,都是有價值的,需要盡力保留
new乙個物件時,new的過程是寶貴的如何建立老物件的知識點(有的new很複雜,包括了很多引數),如果這個**被修改了,那麼保留的老物件也不知道怎麼使用了,整個體系殘缺了
所以要想辦法保留老物件的new過程,把這個new過程儲存分布到一系列工廠類裡,就是所謂的工廠模式,一般有三種方式來封裝
簡單工廠:把物件的建立放到乙個工廠類中,通過引數來建立不同的物件。
這個缺點是每添乙個物件,就需要對簡單工廠進行修改(儘管不是刪**,僅僅是添乙個switch case,但仍然違背了「不改**」的原則)
工廠方法:每種產品由一種工廠來建立,乙個工廠儲存乙個new
基本完美,完全遵循 「不改**」的原則
抽象工廠:僅僅是工廠方法的複雜化,儲存了多個new
大工程才用的上
工廠方法和抽象工廠
csdn沒有在移動上布網,最近移動校園網登不上csdn,今天終於能登上了,小草鳥就寫下最近在學的設計模式。工廠估計也差不多是用的最多的了,對於工廠方法和抽象工廠比較容易混,筆者在這裡說下自己的學習的一些理解。工廠模式 產品對於工廠,當然是生產產品的了,當然我們得有產品類,為了擴充套件性良好,先定義乙...
簡單工廠方法,工廠方法,抽象工廠方法
以大話設計模式計算器為例 簡單工廠方法是由具體執行功能類,工廠類,客戶端構成,工廠類有case語句,負責建立不同的類,客戶端呼叫工廠類裡面的工廠方法,工廠類的工廠方法根據客戶端傳進去的引數new相應的類的物件返回給客戶端,客戶端得到返回的物件用該物件初始化該物件的成員變數最後呼叫該物件的方法執行計算...
設計模式 抽象工廠方法和工廠方法
工廠方法模式定義了乙個建立物件的介面,但由子類決定要例項化的類是哪乙個。工廠方法讓類把例項化推遲到子類。抽象工廠模式提供乙個介面,用於建立相關或依賴物件的家族,而不需要明確指定具體類。從pizzastore的角度,來理解上面的這個類圖 抽象工廠的任務是,定義乙個建立一組產品的介面。這個介面內的每個方...