white-goo
文章7
标签6
分类1
DDD领域驱动设计

DDD领域驱动设计

​ DDD领域驱动设计,是一个适用于复杂系统的设计范式

​ 首先,先看一下DDD的简单项目结构

​ 当然DDD的项目结构可以根据自己的理解自行调整

  • 首先是应用层 application,这一层是用于存放业务接口及实现类的,值得一提的是,业务类并不真正的处理业务,而是进行一个功能的组合,真正的功能实现由各个领域负责
  • 领域层 domain,这一层是DDD的核心,用于存放不同的领域模型,领域模型有以下几个组成部分
    • aggregate: 聚合,是将多个领域对象进行聚合,从而将一些对不同领域对象的操作进行封装,对外提供简单操作
    • entity: 实体类,值得一提的是,DDD的实体类其实是充血型,及实体类内部是包含对该实体类内部属性的操作的,这种操作不只局限于get set方法,还包含了和自身属性相关的业务
    • repository: 仓库,仓库中包含的是对领域对象的获取及持久化,可以使外界不必关心数据库的操作,以及具体的数据库实现
    • service: 领域服务,用于提供对实体类的额外的服务,如对两个实体类进行操作,由于该种操作无法在实体类内部进行,所以抽到外部进行额外封装
    • vo: Value Object: 值对象,值对象包含数字,字符串,日期等,这种数据通常是用来描述某个事物的,值对象应该是简单的,不具备唯一标识的,并且是不可改变的
  • 基础层 infrastructure,这一层是用于存放系统的基础设施的,包括数据库及具体的实现,工具类,配置类等全局共享的东西
  • 用户接口层 interfaces,这一层存放的是对外暴露的接口,如controller之类的东西
本文作者:white-goo
本文链接:https://white-goo.github.io/2021/08/21/DDD/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可