ABP学习笔记:实体 与 值对象

84 篇文章 0 订阅

实体:Entity 值对象:Value Object

先从值对象的概念入手,相比于实体,值对象没有“唯一标识符”。

值对象出现的原因:很多对象没有概念上的标识,仅仅是描述了一个事物的某种特性。

举个例子:

“地址address”  既可以是 实体 也可以是 值对象。这取决于它所处的场景。

场景1: 对于快递公司来说,地址有个唯一的邮编,例如L7 3EN,这个就是地址的唯一标识符,那么在此场景中,“地址” 是一个Entity。

场景2:电力公司运输电力,模型将电力服务与“住处”关联起来,住处是一个带有“地址”属性的Entity,此时“地址”是一个Value Object。

实体里放的是什么?

1.其他对象的集合

即值对象里在放其他的值对象。《领域驱动设计》给出的例子:有一个对象为“窗子”,那么它有这些属性“高度”“宽度”“颜色”“样式”。这个“窗子”,就是由其他 值对象 组合而来的 复杂 值对象。进一步,“窗子”也可以被合并到“墙”这个更大的设计元素中。

2.实体

Value Object可以引用Entity。回到值对象的初衷 “用于描述事物的某种特性”。例子:上海到浙江的过程,称之为“旅途”。“旅途”是一个值对象,他包涵三个实体,“上海” “高速公路” “浙江”。

值对象在项目中用处?

作为参数在对象之间传递消息。通常是临时对象,创建一次之后被丢弃。(有点抽象,这个之后看一下实际项目再回来补充)。

2022/4/1来补充一些,当时在看仓储的时候看到这么一段话。

 疑问:值对象是否是用于 存放 查询的结果?或者说作为查询结果的 具有一定限制性的容器?

什么时候用值对象?

当开发人员,只关心一个模型元素的属性时候,应该归类为值对象。

什么时候用实体?其建模思路?

实体贯穿一个对象的生命周期,它具有抽象的连续性。当一些对象不是由其属性来定义的,那么应该建模为实体。例子:我五岁有存款100块,我25岁存款有10w。那么“我”将被建模为一个实体,具有属性“年龄”  “存款”。我的年龄和存款是有生命周期的,并且是不断变化的,终将会消失,那么对于我来说,应该具有一个唯一标识符。“身份证”将作为我的唯一标识符。(项目中很多时候,框架已经把唯一标识符自动分配,很多时候是不可见的)。当一个实体生命周期结束后,唯一标识符依然存在。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董厂长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值