作者chchwy (mat)
看板OOAD
標題Re: [請教] 請教strategy、state pattern in C++
時間Sat Apr 23 20:35:15 2011
1F:推 iamstudent :其實是因為擔心其他人把那個Data的class拿去用 04/23 20:21
2F:→ iamstudent :雖然算是多餘的煩惱,不過code放那邊 04/23 20:22
3F:→ iamstudent :就會多出一個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)
4F:推 iamstudent :Data的Constructor設為private,然後friend BigClass 04/23 20:49
5F:→ iamstudent :好像就安全了 04/23 20:49
6F:→ chchwy :good idea. 04/23 20:49
7F:→ iamstudent :直接在compiler time以error否決錯誤用法 04/23 20:50
※ 編輯: chchwy 來自: 114.45.97.225 (04/23 21:03)
8F:推 iamstudent :我在C_and_Cpp有放出解決辦法了,可以看看 04/23 21:42