美文网首页
DDD之3实体和值对象

DDD之3实体和值对象

作者: 李福春carter | 来源:发表于2020-06-07 17:05 被阅读0次
image.png

图中是一个别墅的模型,代表实体,可以真实的看得到。那么在DDD设计方法论中,实体和值对象是什么呢?

背景

实体和值对象是领域模型中的领域对象,是组成领域模型的基础单元,一起实现实体最基本的核心领域逻辑。

那么问题来了:

1, 他两在领域模型中的作用是什么?

2,在系统中跟代码模型和数据模型是怎么对应的?

搞清楚这两个问题很重要。回答问题是需要有知识基础的,先来捋清楚这两个概念的定义和内涵。然后在小结部分我们来回答这两个问题。

实体

定义: DDD中的一类对象,拥有唯一标识符,经历各种状态变更后仍然可以保持一致,对这类对象而言,重要的是延续性和标识,(对象的延续性和标识可以超出软件的生命周期)而非属性。

形态:不同的设计过程中,形态不一致。

file

值对象

定义:通过对象的属性值来识别的对象是值对象,它将多个相关属性组合为一个概念整体。它是没有标识符的对象;
**

特点:值对象描述了领域中的一件东西,这个东西是不可变的,它将不同的相关属性组合成了一个概念整体,当度量和描述改变的时候,它可以用另外一个值对象替换,并进行相等性比较而不会带来副作用;
**
**
简单来说: 值对象本质就是一个集合;
**
意义:领域建模过程中,值对象可以保证属性归类的清晰和概念的完整性;
**

image.png
**
**

上图中: 如果把省市区地址放在人员实体中,会显得属性很多很零碎。 推荐的做法是把省市区地址构成一个集合,即地址值对象;

file file

例子:人员地址案例;

file

缺点:如果实体引用的值对象过多,会导致实体堆积一批缺乏概念完整性的属性,值对象失去了业务含义,操作起来不方便;

实体PK值对象

file

DDD提倡从领域模型设计出发,而不是先设计数据模型;

小结

首先明确了实体和值对象的概念,以及在不同的设计阶段的形态。然后通过一个例子展示了实体和值对象的概念和使用;

这是一个从业务模型向系统模型落地过程,考验的是设计能力,我们应该结合自己的业务场景,选择合适的方法进行微服务设计。

最后我来回答一下在背景部分抛出的两个问题?

1, 实体和值对象在领域模型中的作用是什么?

2,在系统中跟代码模型和数据模型是怎么对应的?

经过上面的分析,我的回答如下:

file

希望大家都理解好DDD的实体和值对象,设计出高度灵活的代码;

原创不易,关注诚可贵,转发价更高!转载请注明出处,让我们互通有无,共同进步,欢迎沟通交流。
我会持续分享Java软件编程知识和程序员发展职业之路,欢迎关注!


相关文章

  • DDD之3实体和值对象

    图中是一个别墅的模型,代表实体,可以真实的看得到。那么在DDD设计方法论中,实体和值对象是什么呢? 背景 实体和值...

  • 架构思维学习总结(十九)

    5-3 DDD之战术设计 一、值对象和实体 Value object :从字面理解就是系统中对象的值,描述领域中...

  • DDD如何区分实体和值对象

    前言 实体和值对象的区分是领域驱动设计中的老大难问题,建模过程中是必然会遇到的问题,我们在落地领域驱动设计过程中就...

  • 战术模式--值对象

    值对象虽然经常被掩盖在实体的阴影之下,但它却是非常重要的 DDD 概念。 值对象不具有身份,它纯粹用于描述实体的特...

  • DDD理论学习系列(11)-- 工厂

    DDD理论学习系列——案例及目录 1.引言 在针对大型的复杂领域进行建模时,聚合、实体和值对象之间的依赖关系可能会...

  • 百问中台:基于DDD的中台实体对象

    1 概述 实体对象由两个word组成:实体+对象。在DDD中,实体作为一个领域概念,在设计实体时需要从领域出发。 ...

  • 理不清的DDD术语之:实体与值对象

    看DDD的书时总感觉里面有许多晦涩难懂的术语,这其中就包括实体与值对象。最近的一个项目期间就有客户同学不断问起这两...

  • 大话DDD — 服务、实体、值对象、聚合根

    基于DDD的程序设计,就是将前面的领域模型映射成数据架构中的程序设计,从而通过领域驱动提升软件设计质量,那么应该进...

  • 领域模型核心概念:实体、值对象和聚合根(未完工)

    聚合根、实体和值对象 实体有ID标识,有生命周期,有状态(用值对象来描述状态),实体通过ID进行区分聚合根是实体,...

  • DDD

    实体与值对象的区别: 实体拥有标识,而值对象没有。 相等性测试方式不同。实体根据标识判等,而值对象根据内部所有属性...

网友评论

      本文标题:DDD之3实体和值对象

      本文链接:https://www.haomeiwen.com/subject/fdwctktx.html