关于继承与组合的比较

OO面向对象系统中功能复用,常见的两种技术是类继承与对象组合composition。

 

通过类继承的复用通常可视其为白盒复用(while-box reuse),即在继承方式中,父类的内部细节对子类可见;

 

对象组合这种复用被称为黑盒复用(black-box resue),即对象的内部细节不可见,对象只能以“黑箱”形式出现。

 

类继承是在编译时刻静态定义的,可以直接使用。类继承的不足之处,白盒复用,导致子类揭示了父类的实现细节,也被认为“破坏了封装性”。子类中的实现与父类有如此紧密的关系,以致与父类实现中的任何变化必然会导致子类发生变化。

 

对象组合的优势,有助于保持每个类被封装。这样类和类的继承层次会保持比较小的规模,不大可能增长为一个庞然大雾。另一方面,基于对象组合的设计会有更多的对戏那个(而有更少的类),而且系统的行为将依赖于对象间的关系而不是被定义在某个类中。

 

 

=======》

面向对象的设计原则:

优先使用对象组合,而不是类继承。

 

利用组合建立的系统具有很大的弹性,不仅可以将算法族封装成类,更可以“在运行时动态的改变行为”,只要组合的行为对象符合正确的接口标准即可。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值