Re: [請教] 請教strategy、state pattern in C++

看板OOAD作者 (mat)時間13年前 (2011/04/23 20:35), 編輯推噓2(203)
留言5則, 2人參與, 最新討論串7/7 (看更多)

04/23 20:21,
其實是因為擔心其他人把那個Data的class拿去用
04/23 20:21

04/23 20:22,
雖然算是多餘的煩惱,不過code放那邊
04/23 20:22

04/23 20:22,
就會多出一個class出來,也許看的人就會以為可以用
04/23 20:22
ok 我了解你的疑慮了XDDDD 不過關於這檔事,你還少考慮了一個點。 如我上面那個範例,State class 別人也可以自己隨便建立阿, 但是只有透過BigClass建立的 State 才能拿到正確的 Data,對吧。 Data也是一樣,Data裡面裝什麼是一回事,誰建立他又是另一回事 !!! 如果我這樣寫 class BigClass { private: Data * data; initData(Data * data) { /*初始化data資源*/ } public: BigClass() { initData(this->data); } }; 只有 BigClass 內部的那個 Data 才能獲得正確的初始化, 其他地方自己建立的 Data,都只是個有名無實的空殼。 這樣算不算管好使用資源的權限了呢? -- Mat's Blog http://chchwy.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.97.225 ※ 編輯: chchwy 來自: 114.45.97.225 (04/23 20:39)

04/23 20:49, , 1F
Data的Constructor設為private,然後friend BigClass
04/23 20:49, 1F

04/23 20:49, , 2F
好像就安全了
04/23 20:49, 2F

04/23 20:49, , 3F
good idea.
04/23 20:49, 3F

04/23 20:50, , 4F
直接在compiler time以error否決錯誤用法
04/23 20:50, 4F
※ 編輯: chchwy 來自: 114.45.97.225 (04/23 21:03)

04/23 21:42, , 5F
我在C_and_Cpp有放出解決辦法了,可以看看
04/23 21:42, 5F
文章代碼(AID): #1DiiU7iI (OOAD)
討論串 (同標題文章)
文章代碼(AID): #1DiiU7iI (OOAD)