DDD的模式与实践案例(4)

简介: DDD的模式与实践案例(4)

image.png


当我们要落地DDD的时候就会遇到一个问题DDD的很多东西都放在哪里,怎么跟框架进行结合,网上也很少有案例。技术组件知道都放在基础设施层里,但是其他代码元素比如dto,实体,值对象,仓库这些应该怎么放.怎么去匹配dubbo等技术框架,怎么跟其他层的代码元素进行交互完成业务逻辑。


这里其实借鉴了COLA架构和DDD分层架构来画的一张图。比较明显的是领域层是可以单独拿出来的.这也与之前的讲述是一致的.DDD建模就是要表达业务需求的核心内容,当作核来看待。因此这个领域层的Jar会被应用层和基础设施层分别引用。


image.png


前面几小节已经讲述了DDD的理论模式和业务架构风格,这里我们就进入实战环节,看看如何使用DDD来构建一个博客帖子平台。


image.png


这里使用四色建模法来构建模型图。限于篇幅我大概讲一下建模过程,先确定业务关键时刻,如上图的博客/帖子/微博等。然后针对这个对象产生了一些其他相关的业务活动,我们对这些相关的业务互动继续建模,为其添加角色和描述则得到了上图的建模内容。


image.png


我们用四色建模法得到的模型图来继续构建UML类图,在这个类图中我们对相关的业务对象抽象了一些业务行为,如上图。


image.png


这里借助cola分包的策略来构建博客帖子平台的整体工程包内容,另外这也相当于用了DDD的战术模式--模块模式


这里我们看一下发布博客帖子的时候涉及到哪些领域,以及这些领域的上下文关系,我们从这些领域的交互中能提炼哪些事件消息。


image.png


这里我们看一下发布博客的整体流程,假设这是有多个业务服务构成的业务流程,先由博客领域发起业务活动,


然后由下游的审批服务和运营服务辅助博客领域完成发布博客的业务操作。


image.png


在博客核心服务的内部,我们看一下运用CQRS模式来编写发布博客的整体业务调用流程。这里将博客核心服务分为四层进行建设,有区别的地方就在于读的地方是不一定要先走领域层再到基础设施层的,在松散分层架构下这种情况也是允许的。经过上面的实战之后,这里我也简单列一些关于DDD的最佳实践。如果要用DDD解决问题的话,我们需要做哪些内容呢,首先是团队整体需要认可DDD的思想有意愿用DDD。一个人玩DDD容易达到瓶颈。后续就可以按照DDD的一些模式来构建文档和代码,如此循环。


image.png


下面我们看一些DDD落地的策略,防止落地过程中出现各种各样的问题。对于第二,三,四点我要表达的意思就是说团队中不要因为这些架构,框架和规范的因素影响我们使用DDD。对DDD的理解不同的人有不同的看法有时候会有偏见,在进行DDD建模落地到代码的时候,就很容易导致问题。



image.png


image.png



相关文章
|
7月前
|
前端开发 测试技术 人机交互
DDD - 理论到落地从统一语言开始
DDD - 理论到落地从统一语言开始
446 0
|
5月前
|
中间件 BI 测试技术
【实践篇】领域驱动设计:DDD工程参考架构
领域驱动设计(DDD)参考架构旨在为团队提供DDD实践的起点,强调业务与技术的分离,考虑多种架构风格如分层、六边形等。它包括多限界上下文结构,每个上下文内有应用层(不含领域逻辑)、领域层(含领域模型和事件)和网关层。接入层负责外部请求的处理,业务层协调不同上下文。组件包括Start(启动)、Common(通用)、API、Facade、Application Service、External API、Query、Domain和Gateway,各组件有明确的职责和依赖关系,如Gateway处理技术细节并作为系统与外部的接口。架构设计是多因素权衡,适应实际工程需求。
267 0
|
前端开发 架构师 Java
领域驱动设计DDD从入门到代码实践
在本文中,作者将借鉴《实现领域驱动设计》的做法,介绍领域驱动设计的基本概念的同时,用一个虚拟的公司和一个虚拟的项目,把领域驱动设计进行落地实践。
13474 9
领域驱动设计DDD从入门到代码实践
|
存储 搜索推荐 程序员
DDD概述
程序设计语言指导怎样把设计更好地落地 各种编程范式指导可以用什么样的元素去做设计 设计原则与模式指导如何组合分解出来的各个元素
163 0
|
设计模式 缓存 Java
DDD之代码架构
这是一篇迟到的文章。这其实是我写DDD的第四篇文章。去年11月份左右我在个人网站上写了三篇关于DDD的文章,都是比较偏战略部分的。那个时候我还在一个正在使用DDD的项目上,也是我第一次真正开始深入使用DDD。
627 1
|
存储 消息中间件 JSON
【领域驱动系列3】DDD实践
在前面的《一文带你学习DDD,全是干货!》文章中,里面讲述了一个Demo,虽然有DDD的思想,但是感觉整体很乱,每一层都没有做好隔离,所以我参考小米内部的DDD脚手架,对这个Demo进行了重构,也就诞生了我这个版本,代码已经上传到GitHub中,大家可以自取:https://github.com/lml200701158/ddd-framework
863 0
【领域驱动系列3】DDD实践
|
设计模式 领域建模
DDD的模式与实践案例(1)
DDD的模式与实践案例(1)
1033 0
DDD的模式与实践案例(1)
|
测试技术
DDD的模式与实践案例(3)
DDD的模式与实践案例(3)
549 0
DDD的模式与实践案例(3)
|
设计模式
DDD的模式与实践案例(2)
DDD的模式与实践案例(2)
737 0
DDD的模式与实践案例(2)
|
XML 设计模式 监控
DDD领域驱动实践全面指南(上)
DDD领域驱动实践全面指南
289 0
DDD领域驱动实践全面指南(上)