面向对象的精髓是什么

07-11-13 mmruy
    

看了这里的很多文章,我想提一个问题,面向对象的精髓是什么?如果说精髓是一个起点,那么具体怎么来面向对象,则是一种发散。AOP思想的出现,我认为就是对这一精髓的发散思维,但我对这精髓又把握不准,请大家赐教!

    

banq
2007-11-15 09:47

精髓就是解决问题的新思维:

http://www.jdon.com/article/32520.html

mmruy
2007-11-16 14:06

谢谢bang大哥的指点。链接中的这篇文章我看了,但我认为文章中所阐述的科学思维是具有普遍性的,不只适用面向对象,也适用其它编程,甚至除了编程外的更广的领域,它都适用。这种思想,大概就是哲学吧。

我问的面向对象的精髓,其实是想知道其区别于面向过程的优势,优势肯定很多,在书本也可以找得到,然而优势只是一种形象,形成这种优势的本质是什么?我想就是它对现实世界的模拟,对粒度的分解,于是形成一系列的优势。但有时我又迷惑,如果说面向对象的精髓是能最强的减小粒度(许多解耦的思想其实就是减小了粒度),那么岂非是粒度越小越好?然而我们的应用中,真是粒度越小越好吗?又还是我对这种精髓的把握不够准确?

如果我能撑握这个精髓,这个本质,就不必为解耦而解耦,为AOP而AOP了,我就有了一个明确的指导思想。

banq
2007-11-16 21:51

>如果说面向对象的精髓是能最强的减小粒度(许多解耦的思想其实就是减小了粒度),那么岂非是粒度越小越好?

这个尺度分两个方面:如果这个对象是业务对象,那么粒度以客观世界中物体粒度为准。客观世界物体是关联或聚合的,这个关系无法突破,松耦合到这个份上就走不下去了。

如果这个对象不是业务对象,是属于计算机世界的组件对象,那么粒度当然约细越好,但是因为对象之间的依赖是不可消灭的,也就是说,靠一个对象不可能做所有的事情,对象之间依赖是天生的,因此粒度这条路走下去,会遇到“依赖”这堵墙。所以,不用担心细粒度松耦合走下去是一个无底洞。

bonepole
2008-11-23 11:13

支持面向对象的精髓是多态和封装,用设计模式去具体的运用多态和封装,用万事万物皆对象的观点去分析和设计