三種工廠模式 Factory

2021-09-12 20:27:06 字數 1845 閱讀 5456

一、簡單工廠模式

簡單工廠模式事屬於建立型模式,又叫做靜態工廠方法(static factory method)模式,簡單工廠模式是由乙個工廠物件決定建立出來哪一種產品類的例項,簡單工廠模式的實質是由乙個工廠類根據傳入的引數,動態決定應該建立哪一類產品類(這些產品類繼承自乙個父類或介面)的例項,假設有乙個工廠,他能生產出a、b倆種產品,當客戶需要產品的時候一定要告訴工廠是哪種產品,是a還是b,當新增加一種新產品的時候那麼就要去修改工廠的類

#include "stdafx.h"

#include using namespace std;

typedef enum producttypetag

producttype;

class product

;class product_a :public product

};class product_b : public product

};class factory

}};int main()

二、工廠方法模式

上面的簡單工廠模式的缺點是當新增產品的時候就要去修改工廠的類,這就違反了開放封閉原則,類、模組、函式可以擴充套件,但是不可以修改,於是就出現了工廠方法模式,所謂工廠方法模式,是指定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類現在有a、b倆種產品,那麼就開倆個工廠,工廠a負責生產a產品,工廠b負責生產b產品,這時候客戶不需要告訴工廠生產哪種產品了,只需要告訴工廠生產就可以了

#include "stdafx.h"

#include using namespace std;

class product

;class product_a :public product

};class product_b :public product

};class factory

;class factory_a :public factory

};class factory_b :public factory

};int main()

三、抽象工廠模式

假如我們a產品中有a1和a2倆種型號的產品,b產品中有b1和b2倆種型號的產品,上面倆種工廠模式就不能解決了,這就需要抽象工廠模式了,還是開設倆家工廠,工廠1負責生產a1,b1型號產品,2工廠負責生產a2,b2型號的產品

#include "stdafx.h"

#include using namespace std;

//定義抽象類

class producta

;//定義具體類

class product_a1 :public producta

};class product_a2 :public producta

};//定義抽象類

class productb

;//定義具體類

class product_b1 :public productb

};class product_b2 :public productb

};//定義抽象類

class factory

;//定義具體類

class factory1:public factory

virtual productb* createproductb()

};class factory2 :public factory

virtual productb* createproductb()

};int main()

三種工廠模式

本文介紹設計模式中的工廠模式。工廠模式,顧名思義,就是本來我們需要某樣東西,需要自己造,可有了工廠呢?我需要該東西時,只需告訴工廠,工廠就會生產該東西,一定程度上,把使用者和生產者分開了。解耦了。追本溯源,假設我們現在有乙個類a,類a裡需要類b的乙個物件,一般的處理是這樣,b b new b 但這樣...

三種工廠模式

include include include using namespace std class operation double geta const double getb const void seta double x void setb double y virtual double g...

三種工廠模式

簡單工廠模式不是23種裡的一種,簡而言之,就是有乙個專門生產某個產品的類。比如下圖中的滑鼠工廠,專業生產滑鼠,給引數0,生產戴爾滑鼠,給引數1,生產惠普滑鼠。工廠模式也就是滑鼠工廠是個父類,有生產滑鼠這個介面。戴爾滑鼠工廠,惠普滑鼠工廠繼承它,可以分別生產戴爾滑鼠,惠普滑鼠。生產哪種滑鼠不再由引數決...