概述
重构 — 改善既有的类图设计
条款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。画图应该是这样。如图一所示。
图一
重构后的代码。对调用 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;
};
图二
图二演示了重构后的图,在这里,CSampleImpl 与 CSample 之间指针是从 CSampleImpl 指向 CSample。理由是,CSample 当作了接口,CSampleImpl 为 CSample 的实现类,故我认为应该这样画。
最后
以上就是高贵小土豆为你收集整理的重构 — 改善既有的类图设计 条款9:用Pimpl惯用法隐藏细节的全部内容,希望文章能够帮你解决重构 — 改善既有的类图设计 条款9:用Pimpl惯用法隐藏细节所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复