面向对象并不是必要的

 
程序开发并非一定要面向对象不可,面向对象是一种方式,但是不是唯一的方式,这种方式很多时候有用,不代表任何时候都是最高效的,更不是唯一的真理。
 
面向对象将相关的状态属性和操作方法放在一个实体中,起到了归类和分而治之的作用。
 
对于一个系统来说,这个是最根本的方法。但是面向对象的分而治之并不完美。面向过程也有分而治之的思想和能力,这就是模块开发。对象是复杂的,他有生命过程,有复制克隆的需要,有保持状态的需要,他是一个复杂的实体。而很多时候我们不需要这么多的东西,而只要一个函数,一个过程,一个状态。
 
第二个,面向对象的类型系统非常复杂。
 
第三个,面向对象的封装不彻底,默认的实践是接口和实现同为一个对象实体,如果要分离处界面和实体就显得难以编程。
 
程序开发的技巧是:简单明了,分而治之,抽象化编程。
 
面向对象在这三个方面都有违反的表现,比如如果建立多个对象,对象间的相互关系变得非常复杂。程序员需要掌握非常多得实体概念。
 
分而治之就是面向对象对界面的分离和封装上没有做到很严格。没有一个系统的解决方案。父类对子类的影响,对象直接都是直接操作。
 
抽象化并不是面向对象的专利,比如unix系统的文件就是典型的非面向对象的抽象。抽象是算法的范畴,一个出色的算法,必然高度抽象他操作的对象,让算法适应更多的场合,而对象的类型系统反而会限制了抽象。
 
 
 
posted @ 2011-04-26 15:12  诺贝尔  阅读(568)  评论(1编辑  收藏  举报