• 赵晏龙
    2023-02-08 来自湖南
    1.值对象还在Domain范围,DTO属于应用范围,风马牛不相及。 2.我觉得有必要,但问的方式应该更加通俗,比如说,A1 A2中有个B属性,A1的B变了A2是否应该跟着变?至于理解是否值对象,实际应用中业务方的学习成本会较高。

    作者回复: 嗯,没错

    
    6
  • Jxin
    2023-01-28 来自山东
    内容: 1.巧了,我画领域模型图也会有值对象的缩写。不过我的应用场景是分阶段的,早期可研阶段领域模型的重心是与产品沟通对齐,所以以突出核心模型为主,把其他分支全部隐在属性里。模型的意义是突出重心隐藏复杂。都后面软件建设,要重新划,这个时候是承接上层知识和约束并指导后续软件实现。 2.对于值对象和实体的描述,说得很对。我没在这种维度和团队成员探讨过,如果有实践经验,希望能补充下。我觉得对这块的描述很多说法都对,但关键的还是得看有没有用。这个说法能方便我团队间知识传递吗?这个说法能更好的指导编码实现吗?如果不行,那就只是对。 课后题: 1.反过来可以说是,从本章的内容来看。但没有用,区分dto是否值对象对我实现业务逻辑无帮助。因为如果我的业务逻辑直接依赖dto那本身就是种坏味道。而不依赖,只是传输数据的载体,那管他是啥呢,无所谓。 2.可以,但不建议。能聊沟通信息的厚度能有很大提升,对长期协作有帮助。但对人员的要求太高了,都是流水的兵,这种要求其实也是对特定人的一种高耦合,管理角度看这是一种不稳定。更何况还有干外包的,打一枪放一炮的,还能要求客户水平得如何?
    展开

    作者回复: 问题1,值对象其实不是DTO。DTO只负责传输数据,没有业务逻辑,不属于领域对象层面。值对象是领域层面,往往包含业务逻辑。 问题2,一般不和业务人员直接谈值对象。

    共 2 条评论
    4
  • 神经蛙
    2023-03-03 来自广东
    牛逼这钱值 比另外一门ddd好多了

    作者回复: 谢谢鼓励!

    
    3
  • 龙腾
    2023-01-22 来自河北
    1、DTO好像没有严格定义里面有哪些数据吧,可能是实体也可以是一些零碎的属性,或者是实体和一些其他属性的组合。 2、我觉得一般不用刻意强调,对于实体和值对象的基本概念本来就存在于每个人的大脑中。在构建技术模型和实现时可以根据需要加以区分。

    作者回复: 关于第一问,值对象要处理领域逻辑,DTO只是数据传输。第二问非常到位👍🏻

    
    2
  • tt
    2023-01-19 来自北京
    我觉得值对象不完全是DTO,因为DTO也可以对应客观存在的事物,或者以存在的事物为蓝本想象出来的事物,只是它不需要有逻辑,所以只剩下了属性。

    作者回复: 是的,值对象通常有业务逻辑,DTO主要负责数据传输,不是业务概念,没有业务逻辑

    
    2
  • plimlips
    2023-01-25 来自重庆
    1.DTO不是值对象,他是技术对象,是领域模型和计算机环境的映射 2.分类一般不用强调,但要把这两种对象都分析出来,分类是有助于领域模型落地的

    作者回复: 回答得非常好,您之前应该对DDD有过研究吧?

    共 2 条评论
    1
  • aoe
    2023-01-25 来自浙江
    第一个问题本来觉得是一样的,大家都可以是不可变的数据,这不一样吗?但看了老师的答案后才明白: 值对象要处理领域逻辑,DTO 只是数据传输 看来实体、值对象的共同点是:都可以处理领域逻辑

    作者回复: 是的,因为实体和值对象都是“领域对象”,在领域模型图中可以出现。而DTO不是领域对象,在领域模型中不能出现。

    
    1
  • 末日,成欢
    2023-09-16 来自陕西
    老师,读书有一点困惑的地方 我之前对实体的理解是存在唯一标识,并且唯一标识在整个生命周期内不可变,实体的其他属性对于实体来说不重要,是可变的 但是书里说的是ENTITY可以是任何事物,只要满足两个条件即可, 一是它在整个生命周期中具有连续性,这个连续性想要说什么? 书里说的这句话没有前后文,没理解。 还有5.2.1ENTITY最基本的职责是确保连续性,以便使其行为更清楚且可预测 这里的连续性说明的是什么? 麻烦老师解惑下

    作者回复: 我们在微信群里聊过了,再贴一遍: 实体的“连续性”是相对值对象的“不连续性”来说的。两者要比照着理解。先说实体,比如人是实体,张三人这个实体的一个实例。人有身高体重等属性。张三的体重昨天60公斤,今天变成61公斤,也就是体重属性变了,但张三还是张三,并没有变成另一个人,所以说张三(这个实体)具有连续性。另一方面,“重量”是值对象,“5公斤”是重量这个值对象的一个实例,具有两个属性,一个是数值,另一个是重量单位。假如如果5公斤变成6公斤,也就是说数值属性变了,那么6公斤还是原来那个值对象(5公斤)吗?不是了,6公斤是一个新对象。所以说,值对象不具有“连续性”。只要任何一个属性“变”了(其实本质上来说“值对象的属性会变”是一个伪命题),就是另一个值对象了。

    
    
  • 酱油丹
    2023-03-29 来自广东
    老师,请教一个问题,按这节课的讲述,工作经验其实也可以认为是值对象?理由如下: 1. 无单独的标识,其所有的属性集合就是自身的标识 2. 也是一个抽象的概念,并不是一个客观存在的事物

    作者回复: 有时候两种观点都可以,取决于理解的角度。为了说得更明白,不妨给工作经验再加一个字符串型的字段“工作经验描述”,用来说明这段工作经验里取得了什么成绩。 这时候,第一种理解是,人员、公司、时间段组成了唯一标识,而“工作经验描述”可以修改,这时候,工作经验是实体。 第二种理解,所有字段都不可修改,如果要修改工作经验描述的话,则替换整个对象。这时候可以理解为值对象。准确的说,这个值对象是该员工某个工作经验信息的“快照”。 两种理解都可以,看你的权衡。

    共 2 条评论
    
  • 神经蛙
    2023-03-03 来自广东
    只对象度量了实体的某个属性,把不同相关的属性组成了一个概念整体

    作者回复: 嗯嗯,组成概念整体的值对象就是“复合值对象”

    
    