在我看来,DDD 是一种设计,让你如何去规划这个系统,比如我们在使用微服务的时候,如何决定一个服务到底有多大,能做多少事情,它的边界在哪里,这个就可以用 DDD 来解决,比如我们在做单体服务的时候,如果有两个 service 需要业务上循环依赖,怎么去把它俩的依赖解开,确定每个 service 到底该干那些事。
DDD 是教你怎么去做做设计,不是写两个 command 、domain 就叫 DDD ,贫血/充血什么的只是具体的工具,我经常问别人,现在我们系统是基于面向过程语言编写的,它没有对象模型这种,它就不配用 DDD 了?
记得前几年看过一个大佬这样描述 DDD 的:DDD 是战略,贫血/充血是战术。
可以看一篇 infoq 的文章“DDD 和微服务之间是什么关系?”
DDD 的本质是一种软件设计方法,而微服务架构是具体的实现方式。微服务架构虽好,但是他并没有给出如何对复杂系统进行分解的具体方法论,而 DDD 正好就是解决方案。
https://www.infoq.cn/article/34uhkxy98uztabz_mpui