面向类设计和面向对象设计

    读了孟岩的function/bind的救赎(上),写的太好了,把面向对象设计和面向类设计的区别说的通俗易懂。

    文章中比较了C++、Java、C#、smalltalk的OO设计理念,C++/Java/C#的流行让很多人扭曲了对面向对象的理解,确切的说C++/Java更多的是面向类设计,都是基于simula的思想,smalltalk的OO思想才是历史性的跨越。说白了就是静态消息机制和动态消息机制的区别。

    文章后有个comment很有意思:

>>>

OOP语言的用类型作为接口的实现手段,是它们烦恼的根源。用一个类型代表一组类型,天生就会引发悖论。接口必须是独立于类型的实体。
OOP本身的问题在于,把所有的东西都作为对象,那么谁来处理对象间的关系?当然可以创建负责处理对象关系的对象,但这样不是将问题复杂化了么?软件需要准确地模拟现实世界,但编程不应如此。
另外,从实践出发,实现标准OOP消息的语言只能动态化,没有了类型检测,大量错误被推迟到运行时发现,对于程序质量有很大的影响。对于web或界面程序问题不大,但对于服务级和系统级软件是个大麻烦。

 

    期待孟岩的function/bind的救赎(下)...

 

 

 

你可能感兴趣的:(java,smalltalk)