作者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