工廠模式boost factory

2021-10-09 02:21:08 字數 1292 閱讀 9390

#ifndef mp_object_factory_h  

#define mp_object_factory_h

#include #include typedef boost::shared_ptrproduct_ptr;

/// 工廠模式泛型實現.

/// 限制: 生成的物件必須為通過預設建構函式來構造.

/// 當然你也可以擴充套件這個模板讓它支援更多引數的建構函式.

templateclass objectfactory

/// 通過預設建構函式在堆上建立乙個新的物件例項. 使用new生成.

objecttype * makeobject(const idtype& id)

else

} private:

objectcreator_map objectcreatormap_;

};

#endif

#include "product.h"

#include "concreteproducta.h"

#include "concreteproductb.h"

#include "objectfactory.h"

#include #include int main(int argc, char **ar**)

{ objectfactoryproductfactory; // 物件工廠

// 註冊物件構造器.

productfactory.registerobjectcreator("product_a", boost::factory() );

productfactory.registerobjectcreator("product_b", boost::factory() );

//通過工廠生成物件, 儲存在shared_ptr中.

product_ptr producta( productfactory.makeobject("product_a") );

product_ptr productb( productfactory.makeobject("product_b") );

// 演示多型性質。

producta->dosomething();

productb->dosomething();

return 0;

boost::factory()(arg1,arg2,arg3)  // same as new t(arg1,arg2,arg3)

簡單工廠模式,工廠模式,抽象工廠模式

三種模式看了一天,記錄下自己的理解 headfirst,比薩店為例 1,簡單工廠模式 乙個具體的工廠類 pizzafactory 乙個抽象的產品類pizza,可以派生出多個具體的產品類 客戶 pizzastore類 工廠類 pizzafactory類關聯產品類pizza,工廠生產出不同型別的pizz...

簡單工廠模式 工廠模式 抽象工廠模式

簡單工廠模式 簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關類,對於客戶端來說,去除了與具體產品的依賴。但增加功能時,需增加 case 邏輯判斷分支條件,修改了原有的類,我們不但對擴充套件開發了,對修改也開放了,違背了開放 封閉原則。工廠方法模式,定義了乙...

簡單工廠模式 工廠模式 抽象工廠模式

其實這個三個c 的設計模式已經學習很長時間了,今晚才想起來要寫這三個設計模式,為什麼要用c 中的設計模式呢?for example,你已經會開車了,正著開,倒著開,轉彎,這些都是開車基本的,但是你並沒有很高的車技,並不會炫酷。漂移,就好像c 中的設計模式一樣,在你學好c 的基礎上,嫻熟的應用出的新技...