专业术语解释
1. 值对象
阅读文章
[**实体与值对象的区别?**]( 实体与值对象的区别? - 知乎 (zhihu.com) )
文章总结:值对象用来表示属性的不变值和属性的行为。值对象本身就是对象,内部可以实现相关的验证逻辑等各类逻辑。因此是一个包含属性和行为的整体。 值对象介于
User
这类对象和基本类型之间。 在面向对象的编程中引入值对象能够提升代码的可读性,提升内聚性。而像User
这样的对象则称为实体。实体和值对象是不同的,实体存在唯一性标志,而实体是否相等的判断依据就是唯一性标志。[值对象 Value Object]( 值对象 Value Object_路遥执码力的博客-CSDN博客_值对象 )
[领域模型 — 谈实体对象和值对象]( 领域模型-谈实体对象和值对象 - youxin - 博客园 (cnblogs.com) )
2. DDD(领域驱动设计)
阅读文章
[领域驱动设计在互联网业务开发中的实践]( 领域驱动设计在互联网业务开发中的实践 - 美团技术团队 (meituan.com) )
文章摘录:通过DDD的限界上下文划分,我们界定出抽奖、活动准入、风控、计数、库存等五个上下文,每个上下文在系统中都高度内聚。
限界上下文之间的映射关系
- 合作关系(Partnership):两个上下文紧密合作的关系,一荣俱荣,一损俱损。
- 共享内核(Shared Kernel):两个上下文依赖部分共享的模型。
- 客户方-供应方开发(Customer-Supplier Development):上下文之间有组织的上下游依赖。
- 遵奉者(Conformist):下游上下文只能盲目依赖上游上下文。
- 防腐层(Anticorruption Layer):一个上下文通过一些适配和转换与另一个上下文交互。
- 开放主机服务(Open Host Service):定义一种协议来让其他上下文来对本上下文进行访问。
- 发布语言(Published Language):通常与OHS一起使用,用于定义开放主机的协议。
- 大泥球(Big Ball of Mud):混杂在一起的上下文关系,边界不清晰。
- 另谋他路(SeparateWay):两个完全没有任何联系的上下文。
实体
当一个对象由其标识(而不是属性)区分时,这种对象称为实体(Entity)。
例:最简单的,公安系统的身份信息录入,对于人的模拟,即认为是实体,因为每个人是独一无二的,且其具有唯一标识(如公安系统分发的身份证号码)。
值对象
当一个对象用于对事务进行描述而没有唯一标识时,它被称作值对象(Value Object)。
例:比如颜色信息,我们只需要知道{“name”:“黑色”,”css”:“#000000”}这样的值信息就能够满足要求了,这避免了我们对标识追踪带来的系统复杂性。
聚合根
Aggregate(聚合)是一组相关对象的集合,作为一个整体被外界访问,聚合根(Aggregate Root)是这个聚合的根节点。
聚合由根实体,值对象和实体组成。
一般的工程中包的组织方式为{com.公司名.组织架构.业务.上下文.*},这样的组织结构能够明确的将一个上下文限定在包的内部。
如:com.company.team.bussiness.lottery.*;
-
文章摘录:上下文意味着具体的责任。限界上下文意味着责任是通过明确的边界来强制执行的。
[最近爆火的DDD到底是什么?]( 最近爆火的DDD到底是什么?一文带你落地DDD - 知乎 (zhihu.com) )