这虽然是用英文做的标题,但其真是意义,估计只有中国人才能懂。
首先要说明的是,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();
这种方式再加入到动态语言中,其方式完全符合其想法。我们在调用的时候,根本不需要关心对象是不是已经拥了这个能力。但是,一旦这个对象,能够通过人脉,从而获取这个功能的时候,我们也可以认为此对象已经拥有这个能力了。
当然了,如果要实现这样的方式,还需要编译器的修改。但有一点可以肯定,这是完全可以实现的。那么我们就只是来关心这样的改变之后的特点。
-
对于关系细节进行了封装。
-
符合动态语言中的鸭子类型原则
-
对象的能力是可以扩展的,当然了,这依赖于人脉的扩展。
-
可以更好地理解中国的社会,反过来讲,就是可以更好的描述现实社会。
-
形象地说明了,发展关系和发展技术同样可以赚钱的原因,而且,显然,人脉的能力扩展变得非常容易和快速。
后面两个纯属瞎诌。不可否认的是,我为这种代码上的简写[A.B.S()到A.S()],找到了一种思想依据,这对我来讲,已经很是兴奋了。不知道大家以为如何?欢迎大家拍砖!
分享到:
相关推荐
例如,如果(Subject, Relationship, Object)是一个正确的三元组,那么Subject向量加上Relationship向量应该接近Object向量。TansE通过对大量正确和错误三元组的学习,优化这些向量的表示,从而达到良好的预测效果。 ...
Arrays Intermediate This sample shows how to use TROArray for presentating DB tables in a master/detail relationship. Async Introduction This sample shows how to call methods on a RemObjects SDK ...
Finding relationship between classes and interfaces using object model diagrams Querying data Visualizing geographical data using various rendering Creating various kinds of Desktop Add-Ins ...
基于角色的访问控制(Role-Based Access Control, RBAC)是一种广泛应用于现代信息系统中的权限管理机制。它通过定义角色来管理用户权限,简化了权限分配与维护的过程。本文将深入探讨RBAC的原理及其数据库设计方法...
Based on the system function modules, it creates system function module diagrams, flowcharts, and E-R (Entity-Relationship) diagrams. The system architecture is then designed, and coding is carried ...
Shore-based LiDAR for Coastal Seawater Monitoring. Proceedings ofEARSeL-SIGWorkshop, Figure 1, pg. 47). 3 reflected\\ :.;/ incident 1 I 1 . '\ I lAIR \ •••••••• ••••••••••••• ••...
Chapter 8Primitives as Typesexplores the relationship between the primitive types and objects of their corresponding wrapper classes, and how boxing and unboxing can transparently convert between ...
其他如Object-Oriented Valuation (OVA) 关注资产的面向对象评估,Strategic Value Analysis (SVA) 侧重于战略价值评估,Customer Relationship Management (CRM) 则是关于建立和维护客户关系的系统。此外,Balanced...
首先,"Object Detection And Localization using a knowledge graph on spatial relationship.pdf" 提到的知识图谱在空间关系上的应用,展示了如何利用知识图谱进行目标检测和定位。知识图谱可以存储物体间的空间...
The Relationship of C# to .NET 4 The Common Language Runtime 4 Advantages of Managed Code 4 A Closer Look at Intermediate Language 7 Support for Object Orientation and Interfaces 8 Distinct Value and ...
- **A Unidirectional Set-Based Association**: You'll explore how to map a one-to-many relationship using a unidirectional association. - **Working the Association**: This covers how to manipulate ...
EJB 3.0常用于构建大型的企业级应用,如电子商务系统、CRM(Customer Relationship Management)、ERP(Enterprise Resource Planning)等,提供可靠的服务和数据管理。 通过《EJB3.0實例教程》.pdf,读者将能够...
- **Epipolar Geometry:** Describing the geometric relationship between two calibrated cameras and the corresponding points in their images. - **Essential Matrix and Fundamental Matrix:** Mathematical ...
33. CRM (Customer Relationship Management):客户关系管理,用于管理企业与客户间交互的系统。 34. SCM (Supply Chain Management):供应链管理,协调从供应商到客户的物流、信息流和资金流。 35. BI (Business ...
The choice of Java as the programming language for this project is based on its popularity, robustness, and extensive libraries that support web application development. Java's object-oriented nature ...