领域驱动设计(Domain-Driven Design, DDD)是指通过统一语言、业务抽象、领域划分和领域建模等一系列手段来控制软件复杂度的方法论。
Eric Evans 在 2003 年出版的《领域驱动设计:软件核心复杂性应对之道》(Domain-Driven Design: Tackling Complexity in the Heart of Software)一书中提出这一具有划时代意义的重要概念。
直到近些年微服务理论被提出、被互联网行业广泛使用,人们似乎又重新发现了领域驱动设计的价值。所以看起来也确实是因为微服务,领域驱动设计才迎来了第二春。
软件开发过程的本质是对「问题空间」(需求、业务、用例)转化为「解决方案空间」(模型、组件、架构、方案、代码实现)。
「问题空间」就是系统要解决的「领域问题」,「领域模型」就是「解决方案空间」,是针对特定领域里的关键事物及其关系的可视化表现,是为了准确定义需要解决问题而构造的抽象模型,是业务功能场景在软件系统里的映射转化,其目标是为软件系统构建统一的认知。
领域模型对应的是业务实体,在程序中主要表现为类、聚合根和值对象,它更加关注业务语义的显性化表达,而不是数据的存储和数据之间的关系。
可以说,领域模型存在于客户头脑中,实现于代码的类里面,中间的桥梁就是建立领域模型。
[gr.img.9]
依次是:
更新时间:2021-11-22 11:40:15 标签:软件开发 系统设计