专用名词
-
实体
Entity
-
值对象
ValueObject
-
聚合
根据class之间的关系,多个class聚合在一起,它们生命周期相同
例如:
publish class Order{private Long orderId;// 几十个order自己的字段// 。。。List<OrderItem> orderItemList;DeliveryAddress address;OrderStatus orderStatus;}
充血模型
贫血模型
- 一个entity里只有数据库对应的几个字段,和一些setter和getter方法
-
领域服务
没有办法直接放在聚合里的一些行为,往往是针对多个聚合的业务行为
业务组件
-
命令
人发出的指令,数据修改command,数据查询query
用来驱动我们领域服务的核心业务流程
public class OrderService{public void placeOrder(PlaceOrderCommand command){// 使用聚合、领域服务、业务组件,完成这个指令}}
领域事件
比如用户支付订单后,订单服务发出一个订单支付成功的事件,其他服务监听到这个事件后,做一些事情
仓储repository
用来把聚合数据、实体和持久层进行交互;实现具体聚合的持久化和读取
如果数据底层使用到了nosql、缓存、es、MQ这些,都是封装在repository中
最终目标
聚合(数据+行为)+ 领域服务 + 业务组件 => 还原出业务流程
- PM可以根据代码的英文和注释,读懂你的业务流程,并且和他心里的业务流程基本一致
