簡單工廠模式最大的優點就是在於工廠類中,包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了其他不必要的麻煩。
只需要把』+'給工廠,就可以自動出相應的例項,計算結果即可。但是,簡單工廠模式中,我需要新增功能,在抽象中,的確是只需要增加乙個純虛函式,再加乙個實現即可,我覺得不會影響開閉原則啊。
後面發現自己too young了,我需要在switch裡面修改**啊,不僅拓展了開放,還對修改也開放了,違背了開閉原則。
通過今天的工廠方法模式學習,又加深了物件導向設計的了解,越來越發現,這樣寫**實在太舒服了。
class
operation
//乙個運算類,和乙個獲取結果的虛函式
};
對這個運算類,可以衍生多個運算方法的兒子。
class
add:
public operation//加法類繼承父類,重寫虛函式
};
加減乘除。
class
sub:
public operation};
class
mul:
public operation};
class
div:
public operation
else
return a / b;}}
;
下面我要建造乙個抽象工廠了,每個子工廠負責生成乙個單獨的演算法類,需要什麼,就出什麼工廠。
class
factory
//抽象的工廠,不能例項化
;
下面一共是4個工廠,分別生產加減乘除。
class
addfactory
:public factory};
class
subfactory
:public factory};
class
mulfactory
:public factory};
class
divfactory
:public factory
};
下面是客戶端**
int
main()
工廠方法模組實現時,客戶端需要決定例項化哪個工廠來實現運算類,選擇判斷的問題還是存在,只是把內部的邏輯判斷轉移到客戶端罷了。
只是,需要增加功能的時候,本來是修改工廠類,現在只是增加乙個運算類和修改客戶端。
優點是:符合了開閉原則,可拓展性增強
缺點是:增加了客戶端的負擔,**量變大
工廠方法模式 工廠方法模式
工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...
C 工廠模式 工廠方法
簡單工廠 工廠模式 簡單工廠,工廠方法,抽象工廠三種.工廠方法 力求簡潔 工廠即為生產東西的地方.在c 也有這種模式,充分利用了物件導向語言的三大特徵 多型,繼承 簡單工廠.工廠的功能就是生產,而生產些什麼呢?乙個工廠可以生產鞋子,生產衣服.它們所處的車間不一樣,所以需要兩個不同的類,這兩個類繼承工...
C 工廠方法模式
工廠方法 factorymethod 模式是類的建立模式,其用意是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類中。工廠方法模式是簡單工廠模式的進一步抽象和推廣。由於使用了多型性,工廠方法模式保持了簡單工廠模式的優點,而且克服了它的缺點。在工廠方法模式中,核心的工廠類不再負責所有產品的建立...