畛域驱动设计 - 聚合模式
几种宽泛应用的根本元素
- 实体
具备长久化 ID 的对象。 - 值对象
作为值汇合的对象。例子:Money 对象,由币种、金额组成。 - 工厂
负责实现创建对象逻辑的对象或办法。 - 存储库
用来拜访长久化实体的对象。 - 服务
实现不属于实体或值对象的业务逻辑的对象。
聚合
聚合是一个边界内的畛域对象的集群,能够将其视为一个单元。它由根实体和可能的一个或多个其余实体和值对象组成。
模式:聚合
将畛域模型组织为聚合的汇合,每个聚合都是能够作为一个单元进行解决的一组对象形成的图
聚合规定 (点餐零碎)
点餐零碎有很多概念,这里只拿简略的,订单、餐厅、用户,来形容一下规定
-
- 只援用聚合根
餐厅只援用订单。
用户对于餐厅,只是订单中的内容订单援用餐厅,用户。
作为关联餐厅、用户,记录各自主键,如有必要,做数据冗余用户只援用订单。
餐厅对于用户,只是订单中的内容信息。
- 只援用聚合根
-
- 聚合间援用应用主键
餐厅只援用订单主键信息。
订单只援用,餐厅、用户信息。
比拟非凡的是,对于历史订单,可能须要做其余的数据冗余。因为用户地址信息,餐厅信息可能会变动。用户只援用订单主键信息。
- 聚合间援用应用主键
-
- 在一个事务中,只创立、编辑、删除一个聚合
在一个事务中,只对餐厅、订单、用户,其中之一的信息做改变。
反例:
更新用户信息,并批改用户订单信息。
自身这个操作,就是两个操作。
- 在一个事务中,只创立、编辑、删除一个聚合