主题
什么是领域驱动设计(DDD)
领域驱动设计(Domain-Driven Design,简称 DDD)是一种以 业务需求和领域知识为核心驱动 的软件开发方法论,由 Eric Evans 在其经典著作《Domain-Driven Design: Tackling Complexity in the Heart of Software》中提出。
DDD 的目标是通过建立紧密贴合业务的模型,提升系统的可维护性、可扩展性与对复杂业务变化的适应能力。
✳️ 核心思想
1. 领域为核心(Focus on the Domain)
DDD 强调将业务领域作为软件开发的出发点,而不是数据库结构或技术框架。业务逻辑是系统的核心,模型设计应围绕业务展开。
2. 通用语言(Ubiquitous Language)
通用语言是一种团队之间共享的语言,由开发人员、领域专家共同参与定义。
它贯穿于代码、文档、设计讨论中,确保团队成员对业务模型的理解保持一致。
3. 模型驱动设计(Model-Driven Design)
领域模型不仅是业务概念的抽象,还应通过代码表现出来,并在项目开发过程中不断演进和优化。
模型是业务与技术之间的桥梁,是 DDD 的核心工具。
4. 限界上下文(Bounded Context)
在大型系统中,将不同的业务模型划分到明确的上下文边界内,有助于管理复杂性,防止模型泛化或失控。
每个限界上下文内可以有独立的数据结构、服务逻辑,甚至技术选型。
✅ 适用场景
- 复杂、变化频繁的业务系统;
- 团队中有清晰的领域专家角色;
- 需要长期维护和扩展的核心系统。
🚫 不适用场景
- 简单的 CRUD 系统或原型项目;
- 小型项目,业务规则较少;
- 开发周期非常短,团队协作有限的项目。
DDD 并非一种架构,也不是某种框架,而是一种思考和设计复杂软件系统的方法。它帮助开发者在变化频繁的业务中构建灵活、稳固、可演进的模型结构。