代码复用 读书思考

http://www.cppblog.com/tiandejian/archive/2008/01/02/40082.html

http://publish.itpub.net/msoft/2008-01-07/200801071126077_5.shtml

第一篇文章让我获益匪浅,但Effective C++的书看了, 但没有看到,难道是版本不对:)

头文件依赖,是我当前所做项目中一个很头痛的问题,从这两篇文章,我得到了很好的启示。

1〉依赖声明,不依赖定义,作为C++设计的各位可以深深体会一下,特别项目大了以后,每次添加或修改一部份功能,都回造成好多的代码重新编译,等待时间如此之长,可叹!

2〉依赖一个最顶级类,如接口,函数定义,纯虚类(或一般不怎么修改的类,如标准类),经典实例:

//ClickReceiver.h

class ClickReceiver
{
public:
virtual void OnClick() = 0;
};
//MyDialog.h

#include "ClickReceiver.h"

Class CMyCtrl;

class CMyDlg : public MyCtrlBase,
public Clickreceiver
{
public:
virtual void OnClick();

void SetCtrlReveiverObject(MyCtrl* pMyCtrl,);
private:
MyCtrl * m_myCtrl;
}

void CMyDlg ::SetCtrlReveiverObject(MyCtrl* pMyCtrl,)

{

pMyCtrl->SetReceiver(this);

}

//MyCtrl.h

//Class ClickReceiver;

class MyCtrl : public MyCtrlBase
{
public:
virtual void OnClick();

void SetReceiver(ClickReceiver * pReciever){m_receiver = pReciever};
private:
ClickReceiver *m_receiver;
};
void MyCtrl::OnClick()
{
m_receiver -> OnClick();
}

以上看来,各控件基本上不依赖父类了,仅仅依赖这个纯虚类接口。从某种程度上来看,一个比较复杂的对象,就可以通过提前各个不同功能集合,作为一个接口来继承,可以给改对象中包含的其他对象一个窄接口,可以做得责任单一,减少依赖,真得很好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值