Relationship Based Object

来源:互联网 发布:java学生成绩查询系统 编辑:程序博客网 时间:2024/05/14 17:28
2007年03月10日 18:51:00

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

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

在说RBO之前,我想先说说中国的一个非常典型的人际处理方式:关系。有事托人找关系,没事大家拉关系。现在有人将这个说法提升了一下,叫"人脉",表示的就是你这个人的处理世俗事情的能力。人脉越厚,越表示有能耐。

于是,我突然有一个想法,如果将这个"人脉"的概念,加入到OO中去,会是一个什么情况呢?

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

不过,我倒是感觉这两者是可以协调的。(我的这位同事说,那是因为我还受面向对象的毒害,所以不能完全摆脱他的影响)在中国,人也是独立存在的。只不过,这种人的有了一种特殊的能力,叫人脉。

于是,我提出了一个想法,如果一个对象A,因为它有了人脉,A因此可以借用或请用或贿赂B来完成某一特殊事情S,我们就可以认为A有S的能力。从面向对象的角度来看,调用A的人,并不需要知道A是如何完成S事情的。在原先的对象组织中,显然并没有完全封装好这点。

如果用程序的语言来讲,以前的完成方式是:

A.B.S();

而我提出的方式是:

A.S();

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

当然了,如果要实现这样的方式,还需要编译器的修改。但有一点可以肯定,这是完全可以实现的。那么我们就只是来关心这样的改变之后的特点。

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

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



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1525941


原创粉丝点击