DDD落地 - 实现一个简单的API
1. 前言
去年看了这个系列产品代码都给你看了,可别再说不会DDD的文章,对DDD了解得深了一些,结果长时间不用,全给忘光了。最近又捡起来看了看,然后实操了一下,做了个小小的demo,加深一下印象,下次哪个项目可能就能用上。
另外,这个demo没有做领域事件,回头再加上。
代码地址: https://github.com/ComicFavor/DDD-Demo
2. 代码工程
DDD的术语、细节就不在这个贴子里讲了,前言提及的文章讲得已经足够详细了,这里直接上代码。
2.1. 项目结构
我们常常习惯用先技术再业务的方式来构建工程,我一直都是这样做的,比如说最基本的三层架构。
参考文章里说这是一种反模式,所以也仿照着来了个非反模式。
顺便说一句,这样似乎会让所有的核心功能都在一个工程里面,不知道是不是符合最佳实践。
2.2. 调用关系
刚接触DDD,肯定会被里面的各种术语和关系搞得晕头转向,我这边画个图。
一般有以下两种用例:
-
创建资源
注意:工厂可能需要调用资源库去进行一些判断,比如说是否重复等等,这个功能也可以在领域服务中实现。
-
更新资源:
注意:当业务复杂到需要同时操作多个实体时,就需要用到领域服务。