DDD是一种软件开发模式,目的是为了解构复杂的业务需求,降低不同工种间的沟通障碍,实现结构清晰、可复用、易维护的软件。
《DDD领域驱动设计-货物运输系统》技术专栏从实战出发,通过DDD领域设计知识讲解-运行环境搭建-项目案例实战和源代码分析,让初学者快速掌握DDD和微服务应用开发。在技术专栏中,涉及到DDD领域模型设计、CQRS命令查询职责分离架构、EDA架构、六边形架构、Spring Boot、Spring Data JPA、Spring Cloud Stream和RabbitMQ等等知识点。欢迎访问和交流。
DDD关心的是业务中的领域划分(战略设计)和领域建模(战术设计),其开发过程不再以数据模型为起点,而是以领域模型为出发点,研发过程如图所示。
领域模型对应的是业务实体,在程序中主要表现为聚合根、实体和值对象,它更加关注业务语义的显性化表达,而不是数据的存储和数据之间的关系。
DDD的核心是领域模型,这一方法论可以通俗地理解为先找到业务中的领域模型,以领域模型为中心,驱动项目开发。领域模型的设计精髓在于面向对象分析、对事物的抽象能力,一个领域驱动架构师必然是一个面向对象分析的大师。
我们看看DDD项目中普遍采用的分层架构,如图所示:
可以看到图中标出的 Domain Layer,这其实就是 DDD 的领域模型,由业务分析而来的业务领域概念到这里已经变成了应用中的领域对象(Domain Object)。
DDD中的核心是根据领域业务形成领域模型,然后使用领域模型解决业务问题。当你形成领域模型以后,你的领域层(Domain Layer)就已经完成了。其他的应用服务、资源库都只是为了更方便地使用领域模型。