复合优于继承(16)

1、实现代码复用的有力手段,但并非永远是完成这项工作的最佳工具

2、对于专门为了继承而设计的类、具有好的文档,使用继承是非常安全的

  • 普通类挎包继承是很危险的
  • 本条目不适用于接口

3、与方法调用不同,继承打破了封装性

4、子类脆弱的原因:超类在后续版本中获得新的方法

5、在新的类中添加一个私有域,引用现有类的一个实例

  • 这种方法叫组合(复合)
  • 新类中的所有方法都可以调用该实例,并返回他的方法:即转发
  • 新类中的这种方法叫转发方法
  • 这样得到的类非常稳固,不依赖现有类的实现细节

6、包装类没什么缺点,但不适合回调框架

  • 包装类在转发方法调用的性能上和内存占用上都不会有很大的影响
  • 包装类不仅比子类更加健壮,功能更加强大

7、只有子类真正是超类的子类型时,才适合用继承

  • 只有两者是“is-a” 的关系时

8、组合本质上,A仅仅是B的实现细节

  • 在该使用复合的地方使用继承,会暴露过多实现细节
  • 客户端访问会导致语义混淆

9、如果你正在扩展的类有缺陷

  • 继承使得超类所有缺陷扩展到子类中
  • 复合允许设计心得API 来隐藏这些缺陷

转载于:https://my.oschina.net/u/3847203/blog/1823638

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值