看板 [ OOAD ]
討論串[請教] 請教strategy、state pattern in C++
共 7 篇文章
首頁
上一頁
1
2
下一頁
尾頁

推噓2(2推 0噓 3→)留言5則,0人參與, 最新作者chchwy (mat)時間13年前 (2011/04/23 20:35), 編輯資訊
0
0
1
內容預覽:
ok 我了解你的疑慮了XDDDD. 不過關於這檔事,你還少考慮了一個點。. 如我上面那個範例,State class 別人也可以自己隨便建立阿,. 但是只有透過BigClass建立的 State 才能拿到正確的 Data,對吧。. Data也是一樣,Data裡面裝什麼是一回事,誰建立他又是另一回事
(還有295個字)

推噓0(0推 0噓 0→)留言0則,0人參與, 最新作者iamstudent (stu)時間13年前 (2011/04/23 20:18), 編輯資訊
0
0
0
內容預覽:
我好像想出解法了. 利用inner class來辦到. 不過還沒有測試驗證. //原本的大class. class BigClass. {. private:. StateInterface::Inner _data;. StateInterface* _state;. public:. //設定狀
(還有637個字)

推噓1(1推 0噓 2→)留言3則,0人參與, 最新作者chchwy (mat)時間13年前 (2011/04/23 20:09), 編輯資訊
1
0
0
內容預覽:
不太懂你的問題..... Data 所有的欄位都是 public 有何不好?. 並不是權限設成public就一定會曝露,. 我的做法就是從資源的來源限制起,. 目前除了BigClass與State,其他人根本看不到 Data,. 那 Data 的欄位是 public/private又有什麼關係呢?.

推噓0(0推 0噓 0→)留言0則,0人參與, 最新作者iamstudent (stu)時間13年前 (2011/04/23 19:51), 編輯資訊
1
0
0
內容預覽:
差不多完全是正解了. 把所有資料移動到class Data裡面去. State的Data*用protected就可以讓繼承state的子class使用. 不過這邊又有一個問題. class Data 不就又要friend所有繼承State的class?. 或者class Data所有成員必須是pub
(還有10個字)

推噓3(3推 0噓 2→)留言5則,0人參與, 最新作者chchwy (mat)時間13年前 (2011/04/23 19:33), 編輯資訊
1
0
0
內容預覽:
既然是C++,我就用C++來寫. /* 你說的大class */. class BigClass {. private:. Data * data; //不希望公開曝露的資源,但是必須給State使用。. public:. State* getState() { // 透過BigClass建立Sta
(還有338個字)
首頁
上一頁
1
2
下一頁
尾頁