本文是我学习Scott Millett & Nick Tune编著的《领域驱动设计模式、原理与实践》一书的学习笔记,一共会分为4个部分如下,此文为第1部分:
领域驱动设计的原则与实践战略模式:在有界上下文之间通信战术模式:创建有效的领域模型有效应用程序的设计模式
一、什么是领域驱动设计
脑图浏览:https://www.processon.com/view/5cb49b14e4b0a13c9de1042d#map
这一章主要介绍了DDD是什么,强调DDD是一种开发思想体系,它是模式(战略模式、战术模式)、原则和实践的集合,可以被应用到软件设计中以管理复杂性。
DDD并非一种模式语言,它是专注于交付的一种协作思想体系,其中通信起核心作用,而要高效通信,就需要使用公共语言。
DDD会将侧重点放在以下几个方面:
核心领域
协作
与领域专家探讨
实验研究以生成更有用的模型
对各种上下文的理解
更为重要的是,不要认为DDD是一套框架,DDD也不是银弹或灵丹妙药,不可在项目中小题大做!
下图展示了一个演进的领域驱动设计过程:
From:张逸《领域驱动战略设计实践》课程
这里摘抄一段张逸老师在《领域驱动战略设计实践》课程中的话:
面对客户的业务需求,由领域专家与开发团队展开充分的交流,经过需求分析与知识提炼,以获得清晰的问题域。通过对问题域进行分析和建模,识别限界上下文,利用它划分相对独立的领域,再通过上下文映射建立它们之间的关系,辅以分层架构与六边形架构划分系统的逻辑边界与物理边界,界定领域与技术之间的界限。之后,进入战术设计阶段,深入到限界上下文内对领域进行建模,并以领域模型指导程序设计与编码实现。若在实现过程中,发现领域模型存在重复、错位或缺失时,再进而对已有模型进行重构,甚至重新划分限界上下文。
两个不同阶段的设