继承——若只如初见
相信在开始学习C++、Java、C#等面向对象语言的时候,你总是先接触到继承概念。
老师或书籍总是通过继承让我们相信面向对象开发可以大大节省编码量,因为需要一个新特性的类型时,扩展并添加一两个方法就可以了。
但工作几年后,我们自己逐渐发现继承不总是那么好,尤其当你的设计处于继承结构的底层的时候,每次修改总是牵扯面太大,不愿意或者不敢去修改这些内容。然后,我们借鉴Delphi早期类库设计的技巧,把底层类的大部分方法都定义为虚方法,结果随着项目代码规模的扩大,开发期最灵活的设计往往到了生产环境却造成最难排查的问题。
最后,我们接受了基于接口编程的思路。设计模式也一直倡导组合优于继承的概念,尤其在C#、Java等语言彻底不支持多继承之后,我们才把目光从“堆积”类变成“捆绑”接口。
如果在一开始学习的时候就有人提示一下多好。
继承若只如初见。
贸易电子化,技术全球化