其他博文:

以下内容属于博主“臆想”,如有不当,请别当真。

扯淡开始:

诺兰的最新电影《星际穿越》,最近非常的火热,每个人看完之后都会有不一样的感受,黑洞、虫洞、时间旅行、相对论、未来、人类、爱等等,这些都是这部电影的关键词,科学和艺术原来还可以这样子结合,真是令人叹服。网上有很多人去写一些东西进行分析探讨,也引发了全球“科学热”,这些都是好电影所蕴含的巨大影响力。人是很神奇的动物,每个人都有思考的能力,而且世界上没有完全相同的两个人,所以对待一种事物,每个人都有自己的看待角度,所以得出的结论也不尽相同。

宇宙只是界面,科技永远触摸不到世界的本原。

前段时间刚看完这部电影,然后无意间在园中,发现了一位园友写的一篇观后感,说实话,当时看过这篇博文之后只是有一个印象,并没有深入的去思考一些东西,上面的那段话就来自园友的这篇博文,现在仔细读起来确实很有深意,当然这只是对某一部分人来说,有的人看到也许会很不以为然。

和网上很多“观后感”所不同的是,大多数对于这部电影的探讨分析都是针对科学、宇宙、相对论、N 维空间、剧情等等,比如探讨电影中的黑洞、虫洞描述的是否正确?N 维空间具体是怎样的?“时间穿越”是否真的存在?电影剧情的衔接是否合理?。。。而这位园友的观后感非常”另类“,结合自己的理解,我大致再总结一下:

  • 现实世界是我们与自然的“操作界面”。
  • 虫洞是“操作界面”的一种“快捷方式”,黑洞相当于一个“目录夹”,存放各类文件。
  • 科学家所总结的物理定律,可能只是指导如何玩宇宙这个“操作界面”的“初级手册”。
  • 永恒不变的是人类的爱。
  • 一切都是信息(anything is bit)。

小的时候,我经常在树下观察蚂蚁活动,看他们如何搬运食物,如何搭建巢穴等等,但他们却意识不到我的存在,而我却能观察他们的一举一动,或者他们也意识到我的存在了,只不过我不知道而已,又或者他们觉得我很另类,就像电影中墨菲所说“书架中的 Ghost”,Ghost 只不过是我们对一些不理解事物的统称,也许蚂蚁眼中的我也是“Ghost”吧,但细想一下,如果我们是蚂蚁呢?是不是也有像我一样观察蚂蚁的“我”呢?凡事都有相对性,只不过对一些事物我们不理解罢了。

把现实世界看作是与自然的“操作界面”,这一点内容我想也只有程序员能够想的到吧,但这一部分的想象确实有点太天马星空,不是一般人所能够理解的,但后面的两点内容对我触动很大,或者引发了与我的一些共鸣,上面也曾说过,人是很神奇的动物,因为人有思想,有思考的能力,有语言的能力等等,但最要的是人有情感,人类在不断的进行探索宇宙,但对于自身的探索却始终有限,就像电影中墨菲所说的“Ghost”,其实就是她未来的父亲,但不管过去与未来,父亲对女儿的爱是永恒不变的,这个话题就到这,说多了容易“烂”。

一切都是信息,就像我们玩的游戏,只不过是我们敲出的一行行代码,但表现出来却那么“真实”,引用园友博文中的一段话:

如果我做科幻片的编剧,我会让男主角历经千辛万苦,最后发现自己是一串 0 或 1 的数字。

反过来思考我们人类自身,从某一角度看待,我们何尝不是由“信息”组成的呢?比如生物学中的 DNA、基因、细胞等,这些都可以称之为“信息”,只不过表现方式不同罢了,不同的生物由不同的基因序列组成,但都属于基因,抽离出来它们本质上都是一样的,就像游戏中不同的人物,都是由 0 或 1 组成,只不过所不同的是,0 和 1 的数量和排序不同,但本质都是一样的,都是信息,世间万物抽离出来其实都是原子组成,但神奇的是组成出来的不同事物却完全不同,更为神奇的是人类本身,因为他可以思考他自身是由什么组成的。

由电影所引发的思考就不扯了,因为越扯越远,越扯越离谱。


回答标题的两个关键词:实体和值对象

曾在解道中看到有人这样描述实体和值对象之间的关系:

这个世界是事实和事物的集合。
这句话充分体现了实体对象和值对象的关系。我们所关心的事是事实,他是实体。而我们所关心的事实是由 0 到 N 个事物组成的集合。
如果觉得抽象的话,请用 DNA 来理解每个碱基( DNA 由“jian”基组成,具体哪个"jian"忘了)就是值对象,而拼凑成的 DNA 为实体,而且这个实体是唯一的,我们把他当作每一个人。
有一个大前提,就是当你关心到人的时候,这个世界上每一个人就是实体,而组成这个世界上所有的人的“jian”基就是值对象了。
那这么看来每一个人(事实)都由“jian”基(事物)所组成了。

其实这段描述信息量很大,简单说一下我所理解的,实体和值对象的区分是在“关注点”确定的情况下,也就是他所说的“大前提”,在这个大前提下,值对象其实就是信息,而实体就是由信息组成的一种事物,实体与实体之间的传递就是信息的传递,如果大前提变化了,所有的一切都是可以“逆向”的,也就是说实体可以变为值对象,值对象也可以变为实体,这种情况在现实生活中也很普遍,人口普查就是一个最好的示例。

对待一种事物,我所关心它,也就是说我必须先要区分它,然后接下来才能进行针对它的一些操作,这个“它”就是实体,那对于组成它,或者说描述它的一些信息,都可以看作是值对象,比如一个人的人名,我只需要知道这个值就可以了,但对于它所关联的对象,可以看作是实体,也可以看作是值对象,那具体怎么进行区分呢?主要看我关不关心“它”关联的对象,如果关心,那就是实体,如果不关心,那就是值对象。

在之前的一篇博文中,我常提到“双胞胎”的例子,我和我双胞胎哥哥出生在一所医院中,这个医院据说是“双胞胎的摇篮”,什么意思?因为出生在这个医院的有 80% 是双胞胎(有点扯),医院有个惯例,就是要对双胞胎的出生情况进行调查,比如要对双胞胎父母、以及出生地调查,用来计算出哪个地方出生的双胞胎最多,更具体的是,比如我父亲那个地方双胞胎的父亲或母亲比例,对于我和我双胞胎哥哥来说,医院就要根据我俩来调查我父母,在这个调查的前提下,其实我父母表现出来的就是值对象,因为医院只需要知道这对双胞胎父母的所在地就可以了,不需要知道这个父母具体是哪个?也就是说,在这个调查过程中,医院并不关心这个,对于他们来说,双胞胎的父母表现出来的只不过是一堆“信息”,但前提是这个“调查系统”,这是医院所关心的。对于我和我双胞胎哥俩来说,就不是这样了,对于我们的父母,我们所关心的就不仅仅是一堆“信息”,我们需要确定哪个是我们的父母?这个非常重要。

关心点的不同,就会造成信息表现方式的不同。

当某一实体确定的情况下,比如在某一场景中,把人设计为实体,然后再思考,与他关联的一些对象是设计为实体?还是设计为值对象?如果这个不能确定的话,就要想一想,在这个场景中,我关不关心它?如果关心的话,就要设计为实体,如果不关心,就要设计为值对象,对于同一关联对象,所关心的不同,最后设计的也会不同。

凡事无绝对,就扯到这!

DDD 领域驱动设计-“臆想”中的实体和值对象的更多相关文章

  1. DDD领域驱动设计之聚合、实体、值对象

    关于具体需求,请看前面的博文:DDD领域驱动设计实践篇之如何提取模型,下面是具体的实体.聚合.值对象的代码,不想多说什么是实体.聚合等概念,相信理论的东西大家已经知晓了.本人对DDD表示好奇,没有在真 ...

  2. DDD 领域驱动设计-两个实体的碰撞火花

    上一篇:<DDD 领域驱动设计-领域模型中的用户设计?> 开源地址:https://github.com/yuezhongxin/CNBlogs.Apply.Sample(代码已更新) 在 ...

  3. DDD领域驱动设计之领域服务

    1.DDD领域驱动设计实践篇之如何提取模型 2.DDD领域驱动设计之聚合.实体.值对象 3.DDD领域驱动设计之领域基础设施层 什么是领域服务,DDD书中是说,有些类或者方法,放实体A也不好,放实体B ...

  4. DDD领域驱动设计之领域基础设施层

    1.DDD领域驱动设计实践篇之如何提取模型 2.DDD领域驱动设计之聚合.实体.值对象 其实这里说的基础设施层只是领域层的一些接口和基类而已,没有其他的如日子工具等代码,仅仅是为了说明领域层的一些基础 ...

  5. DDD领域驱动设计之运用层代码

    1.DDD领域驱动设计实践篇之如何提取模型 2.DDD领域驱动设计之聚合.实体.值对象 3.DDD领域驱动设计之领域基础设施层 4.DDD领域驱动设计之领域服务 5.整体DEMO代码 什么是运用层,说 ...

  6. DDD 领域驱动设计-领域模型中的用户设计

    上一篇:<DDD 领域驱动设计-如何控制业务流程?> 开源地址:https://github.com/yuezhongxin/CNBlogs.Apply.Sample(代码已更新,并增加了 ...

  7. DDD 领域驱动设计-三个问题思考实体和值对象(续)

    上一篇:DDD 领域驱动设计-三个问题思考实体和值对象 说实话,整理现在这一篇博文的想法,在上一篇发布出来的时候就有了,但到现在才动起笔来,而且写之前又反复读了上一篇博文的内容及评论,然后去收集资料, ...

  8. DDD 领域驱动设计-三个问题思考实体和值对象

    消息场景:用户 A 发送一个消息给用户 B,用户 B 回复一个消息给用户 A... 现有设计:消息设计为实体并为聚合根,发件人.收件人设计为值对象. 三个问题: 实体最重要的特性是什么? Messag ...

  9. 浅谈我对DDD领域驱动设计的理解

    从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品 ...

随机推荐

  1. 转载:iOS开发之让你的应用“动”起来

    在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画.动画 ...

  2. 日常工作bug总结

    1.在使用jQuery的text()与val()使用时,如果按钮是<button></button>的形式使用text()写入时,在IE8下会出现延迟,即我在写定时器5秒倒计时 ...

  3. DoTween 应用设置

    一.下载 官方下载地址:http://dotween.demigiant.com/download.php 二.安装 1.把下载到压缩包中的DOTween文件夹拷贝到项目文件中 2.安装DOTween ...

  4. Sage Crm 权限原理分析

    文字是11年写的,贴出来共享一下,先来一张表结构图: 一.区域.表名:[territories] 1.我们先来看看区域表的结构. 从图中前面都是不能为空的字段,都是很重要的.来介绍一下这些字段: Te ...

  5. C#:获取设备电量相关信息

    更多资源:http://denghejun.github.io [DllImport("kernel32.dll",EntryPoint="GetSystemPowerS ...

  6. [转]Android通过NDK调用JNI,使用opencv做本地c++代码开发配置方法

    原文地址:http://blog.csdn.net/watkinsong/article/details/9849973 有一种方式不需要自己配置所有的Sun JDK, Android SDK以及ND ...

  7. SQL Server2016 新功能实时查询统计信息

    SQL Server2016 新功能实时查询统计信息 很多时候有这样的场景,开发抱怨DBA没有调优好数据库,DBA抱怨开发写的程序代码差,因此,DBA和开发都成为了死对头,无法真正排查问题. DBA只 ...

  8. Android什么时候进行View中Background的加载

    对大多数Android的开发者来说,最经常的操作莫过于对界面进行布局,View中背景图片的加载是最经常做的.但是我们很少关注这个过程,这篇文章主要解析view中背景图片加载的流程.了解view中背景图 ...

  9. Hystrix框架4--circuit

    circuit 在Hystrix调用服务时,难免会遇到异常,如对方服务不可用,在这种情况下如果仍然不停地调用就是不必要的,在Hystrix中可以配置使用circuit,当达到一定程度错误,就会自动调用 ...

  10. linux添加自定义的命令!

    修改了/root/下的.bashrc -bash-4.1# vi .bashrc # .bashrc # User specific aliases and functions alias rm='r ...