您的位置:首页 > 其它

重构 — 改善既有的类图设计 条款9:用Pimpl惯用法隐藏细节

2008-07-14 15:49 555 查看
重构 — 改善既有的类图设计
条款9:用Pimpl惯用法隐藏细节

黄国强 2008/7/14

重构前的代码。
// UseBySample.h
class CUseBySample
{
public:
CUseBySample(void);
~CUseBySample(void);
};

class CSample
{
public:
CSample(void);
~CSample(void);

private:
CUseBySample m_UseBySample;
};
调用 CSample 的人来说,可以看到 CUseBySample。画图应该是这样。如图一所示。



[align=center]图一
[/align]

重构后的代码。对调用 CSample 的人来说,CUseBySample 就好像不存在一样。

// Sample.h

class CSampleImpl;

class CSample
{
public:
CSample(void);
~CSample(void);

private:
std::auto_ptr<CSampleImpl *> m_Pimpl;
};

// SampleImpl.h
class CSampleImpl
{
public:
CSampleImpl(void);
~CSampleImpl(void);

private:
CUseBySample m_UseBySample;
};



[align=center]图二
[/align]图二演示了重构后的图,在这里,CSampleImpl 与 CSample 之间指针是从 CSampleImpl 指向 CSample。理由是,CSample 当作了接口,CSampleImpl 为 CSample 的实现类,故我认为应该这样画。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐