zenith-docs 1.0.0 Help

DDD概述

DDD 领域驱动设计是一种软件设计的方法论,它的提出是为了应对软件工程其开发越发庞大、复杂。随着微服务架构的兴起,这种方法论也越发被推崇。这篇文档全面的介绍了什么是 DDD 领域驱动设计。

DDD 是什么

DDD(Domain-Driven Design, 领域驱动设计)是由 Eric Evans最先提出来的,通过对软件所设计的领域进行领域建模,来解决因系统规模过大而引起的软件复杂性的问题。

DDD 的过程是开发团队和领域专家使用通用语言讨论、提取领域知识,然后通过领域知识划分领域,领域再划分成子领域。子领域又包含领域模型。这就是领域驱动设计。

DDD 是一种设计思想,是为了解决软件的复杂性的,复杂性包含下面两点:

  • 业务很复杂、难以理解、难以梳理清楚、难以设计和开发,这个问题是通过分层思想来解决的。

  • 软件需要长期维护,对于这个问题,它提出了一个假设,一个系统的核心业务应该是相对稳定的,所以根据这些业务构建出来的领域模型也应该是稳定的。

但是这个假设对于互联网公司来说,是不成立了,变化才是不变的。所以,DDD 能够应对软件需要长期维护这个难题,是需要推敲的。

战略设计

这个术语用于描述在软件开发中,如何通过识别核心领域、分界上下文以及持续的语言来引导和设计系统架构的高层策略。它强调的是对业务领域的深入理解和业务战略的映射,而不是单纯的技术实现。

从业务的角度,建立业务领域模型,划分领域的边界。包含了通用语言、领域、子域、限界上下文、上下文映射图、架构风格等。

通用语言

通用语言就是团队和领域专家通过约定、设计出来的,通用语言是由边界的,离开了这个边界同样的语言就会由不同的含义。所以这个边界就是限界上下文。某个领域或者某个子领域都可以是限界上下文,比如说商品是一个限界上下文。

Last modified: 06 August 2024