DDD 101
参考资料
- 领域驱动设计
- Domain-Driven Design Reference
- 实现领域驱动设计
- 领域驱动设计精粹
- 领域驱动设计模式、原理与实践
- Domain Storytelling
- Event Storm
- 企业应用架构模式
- 重构,改善既有的代码
- 编写有效用例
- HeadFirst 设计模式
- Java Design Patterns
- https://github.com/ddd-crew/welcome-to-ddd
- https://github.com/heynickc/awesome-ddd
- 微服务架构设计模式
DDD基本概念
什么是DDD
专注业务复杂性而非技术复杂性,因为业务模型比项目的技术特性更加复杂,我们才会使用DDD。
DDD的价值
团队中每个都认为自己理解了需求,实际上只有团队中往往只有极少的人理解了需求,甚至没有人真正理解需求。
领域驱动设计是最有价值的软件设计方法集,它的价值不在于提出了或者解决了哪种技术复杂性的问题,而是在于超越技术的概念,提出了业务复杂性是解决技术复杂性的关键。
-
高质量的软件指的是准确实现业务意图的软件,而非没有缺陷。
我们都致力于开发高质量的软件。通过测试,我们可以消除软件系统中大量的bug。然而,即便我们的软件中没有bug,也不能表示我们设计的软件模型本身就是好的。软件中存在少量的瑕疵是无可厚非的,与此同时我们更需要可以设计出能够准确表达业务意图的软件模型的。
DDD首先并不是关于技术的,而是关于讨论、聆听、理解、发现和业务价值的,而这些都是为了将知识集中起来。
DDD的战略设计工具可以帮助你和你的团队做出最有竞争力的软件设计选择和业务整合决策。
-
软件最大的成本不是建设成本,而是变更成本。
开发人员在用户界面和持久层组件中构建业务逻辑。此外,开发人员也经常会在业务逻辑当中执行持久化操作
DDD核心概念
- 领域
- 通用语言
- 领域模型
- 上下文
- 限界上下文