DDD 领域驱动设计

 

ddd,domain-driven design 领域驱动设计,最小单元是领域模型(domain model)。

 

ddd分层

  • module:存放公共基础相关的包
  • server:存放领域服务包,要求严格按领域划分原则切分服务,不可随便增加
  • web:前端内容

 

server领域划分

内部结构分为四层

  • interface 接口层:对外提供http请求接口,负责向用户显示信息和解释用户指令,与外部交互,eg. controller|bex。按业务板块分包
  • application 应用层 :对interface提供跨领域组合的服务,用于组合、处理大块业务,协调和指挥领域对象来完成业务逻辑。应用层是很薄的一层,只有service,按业务板块分包,这些包包含独自的service类,这些service只体现业务的大体逻辑、流程。
  • domain 领域层:对application层提供服务,是软件的核心所在,实现基础的|原子的业务逻辑,并且通过各种校验手段保证业务正确性,负责表达业务概念、业务状态以及业务规则。按业务板块分包,每个板块下又划分service、dao、dto包,即领域模型,每个板块都有独自的领域。domain的service体现的是基础的|原子的业务逻辑处理,dao体现的则是复杂的数据访问操作,一个dao中组合多个基础dao,一个方法中调用基础dao的多个方法,或者调用多个基础dao,期间常常对pojo对一些get、set的简单处理。
  • infrastructure 基础层:为各层提供通用的、基础的支持,支持各层间的交互,相当于common模块,一般包含这些包:util、config,单表对应的entity|model、dao(基础dao),rpc。

interface、application层都可以包含check包——校验入参

通用的exception(系统层面的异常)定义放在infrastructure,只在某个业务板块使用的exception(业务层面的异常)可以放在application、domain层。

调用链从上到下。各层都可以直接调用 infrastructure 基础层。

 

实体类

  • VO:与前端交互的实体
  • DTO:层间交互实体,负责层间的数据传递
  • Entity:对应数据表,用于持久层操作

版权声明:本文为chy_18883701161原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>