什么是DDD领域驱动设计?

简介

03 年 Eric Evans 的 Domain Driven Design 一书,以及后续 Vaughn Vernon 的 Implementing DDD , Uncle Bob 的 Clean Architecture 等书,真正的从业务的角度出发,为全世界绝大部分做纯业务的开发提供了一整套的架构思路。

 

 POP,OOP,DDD是如何解决问题

面向过程编程(POP),接触到需求第一步考虑把需求自顶向下分解成一个一个函数。并且在这个过程中考虑分层,模块化等具体的组织方式,从而分解软件的复杂度。当软件的复杂度不是很大,POP也能得到很好的效果。

 

面向对象编程(OOP),接触到需求第一步考虑把需求分解成一个一个对象,然后每个对象添加一个一个方法和属性,程序通过各种对象之间的调用以及协作,从而实现计算机软件的功能。跟很多工程方法一样,OOP的初衷就是一种处理软件复杂度的设计方法。

 

领域驱动设计(DDD),接触到需求第一步考虑把需求分解成一个一个问题域,然后再把每个问题域分解成一个一个对象,程序通过各种问题域之间的调用以及协作,从而实现计算机软件的功能。DDD是解决复杂中大型软件的一套行之有效方式,现已成为主流。

 

遇到的问题

由于 DDD 不是一套框架,而是一种架构思想,所以在代码层面缺乏了足够的约束,导致 DDD 在实际应用中上手门槛很高,甚至可以说绝大部分人都对 DDD 的理解有所偏差。举个例子, 传统的基于数据库技术以及 MVC 的四层应用架构(UI、Business、Data Access、Database),在一定程度上和 DDD 的一些概念混淆,导致绝大部分人在实际应用当中仅仅用到了 DDD 的建模的思想,而其对于整个架构体系的思想无法落地。

 

来源:

https://segmentfault.com/a/1190000024497091

https://zhuanlan.zhihu.com/p/340911587

修改时间 2021-11-14

真诚赞赏,手留余香
赞赏
随机推荐
apiDoc 参考
上传项目到github
HTML5播放HLS流(.m3u8文件) Apache 跨域设置
jQuery Mobile 1.4.5 弹出框
JavaScript 链表
windows10删除OneDrive
响应式设计-VS-REM布局
php合成与剪裁图片
MySQL 管理用户
在IIS7中使用ARR(Application Request Routing)反向代理