Relationship Based Object

这虽然是用英文作的标题,但其真是意义,估计只有中国人才能懂。ide

首先要说明的是,Relationship Based Object(如下简称RBO),绝对是一个新的概念。由于它是我刚刚杜撰出来的。不过我想借此,表述个人一些在OO上的想法而已。有兴趣的朋友,能够共同讨论。.net

在说RBO以前,我想先说说中国的一个很是典型的人际处理方式:关系。有事托人找关系,没事你们拉关系。如今有人将这个说法提高了一下,叫“人脉”,表示的就是你这我的的处理世俗事情的能力。人脉越厚,越表示有能耐。对象

因而,我忽然有一个想法,若是将这个“人脉”的概念,加入到OO中去,会是一个什么状况呢?blog

其实,在此以前,我已经和一位同事讨论过这方面的问题。他的想法是,西方人关注个体,因而出现了面向对象思想,而中国人关注关系,是否是也应该发明一个面向关系思想?他在这方面还进行过深刻尝试,但愿他能成功。有兴趣的能够到他的博客与他讨论(http://blog.csdn.net/cll0320)。ip

不过,我却是感受这二者是能够协调的。(个人这位同事说,那是由于我还受面向对象的毒害,因此不能彻底摆脱他的影响)在中国,人也是独立存在的。只不过,这种人的有了一种特殊的能力,叫人脉。get

因而,我提出了一个想法,若是一个对象A,由于它有了人脉,A所以能够借用或请用或贿赂B来完成某一特殊事情S,咱们就能够认为A有S的能力。从面向对象的角度来看,调用A的人,并不须要知道A是如何完成S事情的。在原先的对象组织中,显然并无彻底封装好这点。编译器

若是用程序的语言来说,之前的完成方式是:博客

A.B.S();it

而我提出的方式是:io

A.S();

这种方式再加入到动态语言中,其方式彻底符合其想法。咱们在调用的时候,根本不须要关心对象是否是已经拥了这个能力。可是,一旦这个对象,可以经过人脉,从而获取这个功能的时候,咱们也能够认为此对象已经拥有这个能力了。

固然了,若是要实现这样的方式,还须要编译器的修改。但有一点能够确定,这是彻底能够实现的。那么咱们就只是来关心这样的改变以后的特色。

  1. 对于关系细节进行了封装。
  2. 符合动态语言中的鸭子类型原则
  3. 对象的能力是能够扩展的,固然了,这依赖于人脉的扩展。
  4. 能够更好地理解中国的社会,反过来说,就是能够更好的描述现实社会。
  5. 形象地说明了,发展关系和发展技术一样能够赚钱的缘由,并且,显然,人脉的能力扩展变得很是容易和快速。

后面两个纯属瞎诌。不能否认的是,我为这种代码上的简写[A.B.S()到A.S()],找到了一种思想依据,这对我来说,已经非常兴奋了。不知道你们觉得如何?欢迎你们拍砖!

相关文章
相关标签/搜索