开发者社区> 超努力的写代码> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
设计模式(4)代理模式
设计模式(4)代理模式
18 0
装饰器模式与代理模式
装饰器模式start 有一个接口 ISomeService package pattern.decorator; /** * @author futao * Created on 18-8-21-上午6:06.
1395 0
DAO模式的使用
最近在上Servlet的时候,穿插讲了一些DAO设计模式,要求实现对学生表的CRUD,以下完整范例项目Students作为一个回顾。 一.设计架构原理: 直接使用课件原图 image.
940 0
装饰模式
一、简介   装饰(Decorator)模式被称为包装(Wrapper)模式。 装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。并可以在不创造更多子类的情况下,将对象的功能加以扩展。
580 0
装饰模式
       在起初的设计中,当系统需要新功能的时候,是向旧的类中添加新的代码,这些新加的代码通常装饰了原有类的核心职责或主要行为。但这种做法的问题在于,在主类中加入了新的字段,新的方法和新的逻辑,从而增加了主类的复杂度。
971 0
模式实例之——职责链实例
场景:白眉大俠与江湖   描述:江湖绿林道与开封府。小喽兵与小寨主,小七杰可以办案。侠客要小五义。剑客要剑客对付。   (一)开封府 public abstract class KaiFentFu     {         protected KaiFentFu _kaifeng; ...
671 0
1940
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载