领域驱动设计实现
目录
值对象(Value Object)
即没有唯一标识 id 的对象,例如颜色,长短,价格
实体
有唯一标识的对象,比如某个用户,某个商品。但是用户的高矮,胖瘦;商品的颜色,尺寸,价格就是值对象。
领域服务(领域对象 domain object)
领域服务是没有任何属性(无状态)的对象,只有方法,这些方法仅描述如何解决领域问题。
领域对象的创建,使用工厂来创建。
聚合
聚合根
聚合根之间的通信,使用事件。
领域模型的目标:让技术复杂性和业务复杂性分割开,那么如何分割开呢?我们将领域模型划分到领域层,底层技术实现划分到基础层。
分层
层 | 操作 |
---|---|
用户接口层 | |
应用层 | |
领域层 | |
基础设施层 | 数据驱动,Mapper,DTO,PO |
疑惑
- 你以为分层后,能避免耦合,不会跨层调用
错,DDD 分层后,上层可以跨层调用下层。是不是有点晕了,这其实也是为了灵活和变通。
举个例子:
需要你输出一个接口,返回配置表的数据。我认为你应该是在controller
直接查库返回,而不是再封装一个dao
,service
。
灵活高效,特事特办。
分层