增量开发(incremental development)

继承技术的优点之一,就是它支持增量开发模式。你可以引入新代码而不会在现有代码中引
发 Bug。事实上,这种模式可以将新的 Bug 隔离在新的代码之中。通过从现有的、功能性
的类继承并添加数据成员和成员方法(并重新定义现有方法),就可以使别人可能仍在使用
中的现有代码既不会被改变也不会新增 Bug。
 
类被隔离得如此之干净,实在令人惊奇。你甚至不需要为了复用程序代码而调用方法的源代
码,充其量只需要导入(import)一个包即可(这对继承和组合都适用)。
 
我们要认识到程序开发是一种增量过程,犹如人类的学习一样,这一点很重要。你可以尽你
所能去分析,但当你开始执行一个项目时,你仍然无法知道所有的答案。如果你将项目视作
是一种有机的、进化着的生命体而去培养,而不是打算像盖摩天大楼一样快速见效,你就会
获得更多的成功和更迅速的回馈。
 
虽然就经验而言,继承是一种有用的技术,但在事情已稳定的情况下,你就得采取一个新视
角来审视你的类层级结构,力求将其缩减为一种更实用的结构。记住,继承代表着对一种关
系的展示,即“此新类是彼旧类的一种类型。”你的程序不应该只关心对 bit 的处理,而应
该通过生成和操作各种类型的对象,用来自于问题空间(problem space)中的术语来表现一
个模型(model)。

向上转型(upcasting)

“为新的类提供方法”并不是继承技术中最重要的一个方面。其最重要的方面是它被用来表
现新类和基类之间的关系。这种关系可以用“新类是现有类的一种类型”这句话来加以概括。

 

在面向对象编程中,生成和使用程序代码最有可能采用的方法就是直接将数据和方法包装进
一个类中,并使用该类的对象。你也可以运用组合技术使用现有类来开发新的类。而继承技
术其实是不太常用的。因此,尽管在学习 OOP 的过程中,我们多次强调继承,但这并不意
味着你一有可能就要使用它。相反地,你应当慎用这一技术,其使用场合仅限于你确信使用
该技术确实有效的情况。
一个用以判断你到底是该用组合还是继承的最清晰的办法,就是问
一问你自己是否需要从新类向基类向上转型
。如果你必须向上转型,则继承是必要的,但如
果你不需要,则你应当好好考虑自己是否需要继承。下一章(多态 polymorphism)提出了
一个使用向上转型的最具说服力的理由,但只要你记得问一下“我真的需要向上转型吗?”,
你就拥有了一个很好的工具来在这两种技术中做出决定。
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值