Relationship Based Object铪

2024-01-17 22:48
文章标签 object based relationship

本文主要是介绍Relationship Based Object铪,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

首先要说明的是,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()],找到了一种思想依据,这对我来讲,已经很是兴奋了。不知道大家以为如何?欢迎大家拍砖!




这篇关于Relationship Based Object铪的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/617431

相关文章

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At

error while loading shared libraries: libnuma.so.1: cannot open shared object file:

腾讯云CentOS,安装Mysql时: 1.yum remove libnuma.so.1 2.yum install numactl.x86_64

java基础总结12-面向对象8(Object类)

1 Object类介绍 Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父类又是从另外一个父类继承过来,那他也只能有一个父类,父类再有父类,那也只能有一个,JAVA为了组织这个类组织得比较方便,它提供了一个最根上的类,相当于所有的类都是从这个类继承,这个类就叫Object。所以Object类是所有JAVA类的根基类,是所有JAVA类的老祖宗

MACS bdgdiff: Differential peak detection based on paired four bedGraph files.

参考原文地址:[http://manpages.ubuntu.com/manpages/xenial/man1/macs2_bdgdiff.1.html](http://manpages.ubuntu.com/manpages/xenial/man1/macs2_bdgdiff.1.html) 文章目录 一、MACS bdgdiff 简介DESCRIPTION 二、用法

Neighborhood Homophily-based Graph Convolutional Network

#paper/ccfB 推荐指数: #paper/⭐ #pp/图结构学习 流程 重定义同配性指标: N H i k = ∣ N ( i , k , c m a x ) ∣ ∣ N ( i , k ) ∣ with c m a x = arg ⁡ max ⁡ c ∈ [ 1 , C ] ∣ N ( i , k , c ) ∣ NH_i^k=\frac{|\mathcal{N}(i,k,c_{

王立平--Object-c

object-c通常写作objective-c或者obj-c,是根据C语言所衍生出来的语言,继承了C语言的特性,是扩充C的面向对象编程语言。它主要使用于MacOSX和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。Objective-C可以在gcc运作的系统写和编译,因为gcc含Objective-C的编译器。在MA

Android Studio打开Modem模块出现:The project ‘***‘ is not a Gradle-based project

花了挺长时间处理该问题,特记录如下:1.背景: 在Android studio 下导入一个新增的modem模块,如MPSS.DE.3.1.1\modem_proc\AAA, 目的是看代码方便一些,可以自由搜索各种关键字。但导入该项目时出现了如下错误: The project '***' is not a Gradle-based project.造成的问题: (1) project 下没有代码,而

COD论文笔记 ECCV2024 Just a Hint: Point-Supervised Camouflaged Object Detection

这篇论文的主要动机、现有方法的不足、拟解决的问题、主要贡献和创新点: 1. 动机 伪装物体检测(Camouflaged Object Detection, COD)旨在检测隐藏在环境中的伪装物体,这是一个具有挑战性的任务。由于伪装物体与背景的细微差别和模糊的边界,手动标注像素级的物体非常耗时,例如每张图片可能需要 60 分钟来标注。因此,作者希望通过减少标注负担,提出了一种仅依赖“点标注”的弱

SIM(Search-based user interest modeling)

导读 我们对电商场景兴趣建模的理解愈发清晰:1. 通过预估目标item的信息对用户过去的行为做search提取和item相关的信息是一个很核心有效的技术。2. 更长的用户行为序列信息对CTR建模是非常有效且珍贵的。从用户的角度思考,我们也希望能关注用户长期的兴趣。但是当前的search方法无论是DIN和DIEN都不允许我们在线对一个超长的行为序列比如1000以上做有效搜索。所以我们的目标就比较明