继承——若只如初见
2011-06-06 12:13
330 查看
相信在开始学习C++、Java、C#等面向对象语言的时候,你总是先接触到继承概念。
老师或书籍总是通过继承让我们相信面向对象开发可以大大节省编码量,因为需要一个新特性的类型时,扩展并添加一两个方法就可以了。
但工作几年后,我们自己逐渐发现继承不总是那么好,尤其当你的设计处于继承结构的底层的时候,每次修改总是牵扯面太大,不愿意或者不敢去修改这些内容。然后,我们借鉴Delphi早期类库设计的技巧,把底层类的大部分方法都定义为虚方法,结果随着项目代码规模的扩大,开发期最灵活的设计往往到了生产环境却造成最难排查的问题。
最后,我们接受了基于接口编程的思路。设计模式也一直倡导组合优于继承的概念,尤其在C#、Java等语言彻底不支持多继承之后,我们才把目光从“堆积”类变成“捆绑”接口。
如果在一开始学习的时候就有人提示一下多好。
继承若只如初见。
老师或书籍总是通过继承让我们相信面向对象开发可以大大节省编码量,因为需要一个新特性的类型时,扩展并添加一两个方法就可以了。
但工作几年后,我们自己逐渐发现继承不总是那么好,尤其当你的设计处于继承结构的底层的时候,每次修改总是牵扯面太大,不愿意或者不敢去修改这些内容。然后,我们借鉴Delphi早期类库设计的技巧,把底层类的大部分方法都定义为虚方法,结果随着项目代码规模的扩大,开发期最灵活的设计往往到了生产环境却造成最难排查的问题。
最后,我们接受了基于接口编程的思路。设计模式也一直倡导组合优于继承的概念,尤其在C#、Java等语言彻底不支持多继承之后,我们才把目光从“堆积”类变成“捆绑”接口。
如果在一开始学习的时候就有人提示一下多好。
继承若只如初见。
相关文章推荐
- 初见继承威力
- 初见继承威力
- 【Swift初见】Swift继承
- 初见继承威力
- javascript类继承机制
- 理解Javascript_05_原型继承原理javascript
- javascript类式继承1
- <转>C++继承中虚函数的使用
- 第12周阅读多重继承-虚基类的用法
- 《Effective C++》Rule36:绝不重新定义继承而来的non-virtual函数
- JavaScript继承(图解笔记)
- [Unity&继承]类的内部类继承的结果
- 继承
- JavaScript原型继承小记
- cocos2d显示对象的继承图
- javascript类式继承2
- Effective C++:条款37:绝不重新定义继承而来的缺省参数值
- 十一周——继承与派生——项目四 圆的关系
- java学习日记——继承中方法的重写
- Java基础--封装、继承、多态