Re: [問題] factory pattern

看板C_and_CPP作者 (綠豆嘉義人)時間14年前 (2011/11/19 01:47), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/7 (看更多)
既然你都把它定義為factory 怎麼又會說要隨時修改他create object的屬性 ? 一般設計上factory最多就是Create / init / 或是destroy 比較常見的用法應該是這樣( 不能compile, 看看即可) class CBase {}; class A:CBase {}; class B:CBase {}; class CFactory { public: enum Types { Type_A =0 , Type_B } ; static CBase* CreateInstance(int type) { if(type == Type_A ) return new A(); else if(type==Type_B) return new B(); else //... exception or assert } }; class CUser { void Foo() { CBase *p1; CBase *p2; p1 = CFactory::CreateInstance(CFactory::Type_A); p2 = Factory::CreateInstance(CFactory::Type_B); p1-> .... p2-> .... .... other operations } }; ※ 引述《tyc5116 (累人啊....)》之銘言: : 請問,以factory pattern建立物件,如下 : http://codepad.org/DU5sLXpg : 可以正確建立不同的物件 : 可是我怎麼取得obj1及obj2的屬性值呢? : 也就是怎麼取得obj1在它為ObjectA所設定的ID,及obj2在它為ObjectB所設定的ID : 這部份覺得怪怪的,在new出一個物件時給值,return出來時addr不是就遺失了嗎? : 也就是類似這樣 : int* func() : { : int* num=0; : *num=10; : return num; : } : 又或者,透過ObjectA及ObjectB的ctor給值(還沒試) : 但obj1和obj2又要如何取得值? : 以及,屬性如何需要常常修改,又要如何處理呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 119.77.223.81 ※ 編輯: mingtai1 來自: 119.77.223.81 (11/19 01:50)
文章代碼(AID): #1EnfeyAh (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1EnfeyAh (C_and_CPP)