开发大型软件最难的部分不是实现,而是要深刻理解它所服务的现实世界的领域。DDD 就是主张重点关注领域本身,维护一个对领域有深度认知的软件模型。DDD 就是关于建立这个软件模型的方法论。
<aside> 💡 问题域: 现实世界的业务问题 解决域:采用 DDD 建模方法论对业务问题的抽象
DDD 其实就是提供一套方法论,将现实的业务问题进行分析,提取出能够映射到代码设计的相关对象:
</aside>
领域模型是系统化的领域知识。
和传统分析模型的区别是什么?领域模型和设计是关联的,会考虑软件的实现。
传统分析模型不会考虑软件是如何实现的,开发人员需要基于这个模型进行设计,这就创建了分离的设计,模型与代码之间不存在映射关系,最后分析模型在编码最后就被抛弃了。
概念建模与物理建模。领域模型属于概念建模,相对应的数据库建模就是物理建模。复杂软件的开发应该是自定而下的,先是概念建模再物理建模。但大部分团队是没做概念建模的,到最后就丢失了领域知识。