Relationship Based Object

<p style="text-indent: 21pt;">这虽然是用英文做的标题,但其真是意义,估计只有中国人才能懂。</p>
<p style="text-indent: 21pt;">首先要说明的是,Relationship Based  Object(以下简称RBO),绝对是一个新的概念。因为它是我刚刚杜撰出来的。不过我想借此,表述我的一些在OO上的想法而已。有兴趣的朋友,可以共同讨论。</p>
<p style="text-indent: 21pt;">在说RBO之前,我想先说说中国的一个非常典型的人际处理方式:关系。有事托人找关系,没事大家拉关系。现在有人将这个说法提升了一下,叫“人脉”,表示的就是你这个人的处理世俗事情的能力。人脉越厚,越表示有能耐。</p>
<p style="text-indent: 21pt;">于是,我突然有一个想法,如果将这个“人脉”的概念,加入到OO中去,会是一个什么情况呢?</p>
<p style="text-indent: 21pt;">其实,在此之前,我已经和一位同事讨论过这方面的问题。他的想法是,西方人关注个体,于是出现了面向对象思想,而中国人关注关系,是不是也应该发明一个面向关系思想?他在这方面还进行过深入尝试,希望他能成功。有兴趣的可以到他的博客与他讨论(<a href="http://blog.csdn.net/cll0320">http://blog.csdn.net/cll0320</a>)。</p>
<p style="text-indent: 21pt;">不过,我倒是感觉这两者是可以协调的。(我的这位同事说,那是因为我还受面向对象的毒害,所以不能完全摆脱他的影响)在中国,人也是独立存在的。只不过,这种人的有了一种特殊的能力,叫人脉。</p>
<p style="text-indent: 21pt;">于是,我提出了一个想法,如果一个对象A,因为它有了人脉,A因此可以借用或请用或贿赂B来完成某一特殊事情S,我们就可以认为A有S的能力。从面向对象的角度来看,调用A的人,并不需要知道A是如何完成S事情的。在原先的对象组织中,显然并没有完全封装好这点。</p>
<p style="text-indent: 21pt;">如果用程序的语言来讲,以前的完成方式是:</p>
<p style="text-indent: 21pt;">A.B.S();</p>
<p style="text-indent: 21pt;">而我提出的方式是:</p>
<p style="text-indent: 21pt;">A.S();</p>
<p style="text-indent: 21pt;">这种方式再加入到动态语言中,其方式完全符合其想法。我们在调用的时候,根本不需要关心对象是不是已经拥了这个能力。但是,一旦这个对象,能够通过人脉,从而获取这个功能的时候,我们也可以认为此对象已经拥有这个能力了。</p>
<p style="text-indent: 21pt;">当然了,如果要实现这样的方式,还需要编译器的修改。但有一点可以肯定,这是完全可以实现的。那么我们就只是来关心这样的改变之后的特点。</p>
<ol>
<li>
    <div style="text-indent: 21pt;">对于关系细节进行了封装。</div>
    </li>
    <li>
    <div style="text-indent: 21pt;">符合动态语言中的鸭子类型原则</div>
    </li>
    <li>
    <div style="text-indent: 21pt;">对象的能力是可以扩展的,当然了,这依赖于人脉的扩展。</div>
    </li>
    <li>
    <div style="text-indent: 21pt;">可以更好地理解中国的社会,反过来讲,就是可以更好的描述现实社会。</div>
    </li>
    <li>
    <div style="text-indent: 21pt;">形象地说明了,发展关系和发展技术同样可以赚钱的原因,而且,显然,人脉的能力扩展变得非常容易和快速。</div>
    </li>
</ol>
<p style="text-indent: 21pt;">后面两个纯属瞎诌。不可否认的是,我为这种代码上的简写[A.B.S()到A.S()],找到了一种思想依据,这对我来讲,已经很是兴奋了。不知道大家以为如何?欢迎大家拍砖!</p>

你可能感兴趣的:(object)