领域驱动设计01. DDD概述

01. 什么是DDD?

DDD(Domain-Driven Design)领域驱动设计

DDD是一种软件开发方法,可以帮助我们设计高质量的软件模型。

DDD是Eric Evans在2003年出版的《领域驱动设计:软件核心复杂性应对之道》(Domain-Driven Design: Tackling Complexity in the Heart of Software)一书中提出的具有划时代意义的重要概念,是指通过统一语言、业务抽象、领域划分和领域建模等一系列手段来控制软件复杂度的方法论.

DDD的革命性在于领域驱动设计是面向对象分析的方法论,它可以利用面向对象的特性(封装、多态)有效地化解复杂性,而传统J2EE或Spring+Hibernate等事务性编程模型只关心数据。这些数据对象除了简单的setter/getter方法外,不包含任何业务逻辑,业务逻辑都是以过程式的代码写在Service中。这种方式极易上手,但随着业务的发展,系统也很容易变得混乱复杂。

领域驱动设计关心的是业务中的领域划分(战略设计)和领域建模(战术设计),其开发过程不再以数据模型为起点,而是以领域模型为出发点,研发过程如图所示。领域模型对应的是业务实体,在程序中主要表现为类、聚合根和值对象,它更加关注业务语义的显性化表达,而不是数据的存储和数据之间的关系。

Evic Evans在著作中将软件系统的设计分为2个部分:战略设计战术设计

在战略设计层面提出了域、子域、限界上下文等重要概念;在战术设计层面提出了实体、值对象、领域服务、领域事件、聚合、工厂、资源库等重要概念。如图所示:

战略设计部分指导我们如何拆分一个复杂的系统,(全局思考)

战术部分指导我们对于拆分出来的单个子系统如何进行落地,在落地过程中应该遵循哪些原则。(局部方法)

 

02. 为什么需要DDD?

1. 统一语言,使业务专家和技术人员组成一个密切协作的团队,不需要翻译。统一结果认知。

2. 更方便知识沉淀,知识传递。

3. 设计就是代码,代码就是设计,业务建模代码可反推业务。

4. 可分析出组织重点,做组织核心能力倾斜。

其他理解

1. 更好的分析业务。

2. 战术设计提供了比较有效的设计方案。

3. 了解多一种架构思想,开拓自己的设计思路。

 

03. DDD能带来的价值

1. 获得一个有用的领域模型

2. 业务得到了更准确的定义和理解

3. 更好的用户体验

4. 清晰的模型边界

5. 更好的企业架构

6. 敏捷、迭代式和持续建模

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值