QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

当 DDD 遇上 DCI(Data, Context, Interactive)架构模式

  • 2019-08-11
  • 本文字数:938 字

    阅读完需:约 3 分钟

当 DDD 遇上 DCI(Data, Context, Interactive)架构模式

ArchSummit深圳2019大会上,张晓龙讲师做了《当 DDD 遇上 DCI(Data, Context, Interactive)架构模式》主题演讲,主要内容如下。


演讲简介


DCI 是数据、场景、交互(Data、Context、Interactions)简称,重点是关注数据的不同场景的交互行为,是面向对象系统状态和行为的一种范式设计;DCI 在许多方面是许多过去范式的统一,多年来这些模式已经成为面向对象编程的辅助工具。


问题背景:电信软件的功能复杂特性交叉,对实时性和数据一致性的要求比较高,代码规模比较大,同时处理大量并发活动。


解决方案选型:1.领域建模+贫血模型;2.领域建模+充血模型;3.领域建模+DCI。


方案介绍:选择“领域建模+DCI”,将类和对象看成不同的事物。类作为一种模块化手段,遵循高内聚,低耦合,让软件易于应对变化;将类看做是领域对象拥有的职责或扮演的角色,对象作为一种领域对象的的直接映射,解决了过多的类带来的可理解性问题,让领域可以指导设计,设计真正反映领域。如果使用 C++ 语言来实现的话,可以通过多重继承的方式来完成职责 ROLE 的组合 ;如果使用 Go 语言来实现的话,可以通过依赖注入的方式完成职责 ROLE 的组合。


实施后效果说明:DCI 可以和 DDD 融合在一起,基于职责的组合式设计提高了代码的可理解性和应对变化的能力,而且对于开发人员来说 DCI 带来的收益比 DDD 更大。


演讲提纲


  1. DCI 架构模式

  2. Data,Context,Interaction

  3. 优缺点

  4. DCI 是 DDD 的补充

  5. 类与对象的关系

  6. DCI 与 DDD 的融合

  7. ROLE 的建模

  8. 数据依赖管理

  9. 领域模型各部分的可组合性

  10. 实践案例

  11. 案例介绍

  12. 物理设计

  13. 领域模型设计

  14. 代码实现要点

  15. 小结

  16. DCI 与 DDD 的融合

  17. 审视类与对象的关系

  18. DCI 落地的核心是 ROLE 的建模

  19. 对于开发人员来说 DCI 的收益比 DDD 更大


听众受益点


  1. 理解 DCI 架构模式

  2. 明白 DDD 和 DCI 的关系

  3. 清楚团队基于 DDD 落地 DCI 的方法


讲师介绍


张晓龙


中兴通讯 资深软件架构师


Gomonkey 和 Go 语言 trans-dsl 作者,具有十多年软件架构和开发经验,近年专注 PaaS 和 5G 等大型项目的设计和开发,精通微服务契约测试。爱读书,爱运动,爱编程,爱分享,对于大型软件的重构具有丰富的实战经验。曾指导多个团队积极实践 DDD,包括开发领域和测试领域,取得了比较好的效果。












完整演讲 PPT 下载链接


https://archsummit.infoq.cn/2019/shenzhen/schedule


2019-08-11 00:005992

评论

发布
暂无评论
发现更多内容

Ubuntu18.04下QT开发Android无法连接设备问题解决

DS小龙哥

3月月更

面试突击32:为什么创建线程池一定要用ThreadPoolExecutor?

王磊

java面试

10 行 Python 代码自动清理电脑内重复文件,解放双手!

程序媛可鸥

Python 程序员 面试

架构实战营毕业总结

novoer

「架构实战营」

模块九:毕业设计

黄秀明

「架构实战营」

在 Node.js 中使用 Yaml 编写API文档

devpoint

node.js API yaml swagger 3月月更

云上业务配置选型的一些小Tips

穿过生命散发芬芳

3月月更

ICT的圣杯(三):产业融合的技术乐章

脑极体

手把手教你用 Vue 搭建带预览的「上传图片」管理后台

蒋川

Vue vue admin

2022 年顶级机器学习算法和 Python 库,【原理+实战+视频+源码】

程序媛可鸥

Python 程序员 面试

2万字详解测试金字塔

俞凡

最佳实践 测试 研发效能

《不敢止步》--读书笔记

stars

从简单代码入手,分析线程池原理

架构 线程池 池化思想

LabVIEW实现CRC校验

不脱发的程序猿

LabVIEW CRC校验

用 Go 语言打造一个全新的 kv 存储引擎

roseduan

Go KV存储引擎

聊一聊C语言位域/位段

不脱发的程序猿

C语言 嵌入式开发 位域/位段

小程序电商业务微服务架构及微服务框架模式

「架构实战营」

工作想法小计(5):3/7 - 3/18

非晓为骁

个人成长 细节 工作想法

高并发架构实战课 期中测试:某达架构设计说明书

👽

李智慧 高并发架构实战课 李智慧

尤达 DDD 领域驱动设计思想 第四章作业(使用事件风暴建模法对SmartRM系统的交易域重新建模)

代廉洁

尤达DDD领域驱动设计思想

4 行代码实现批量、快速安装 Python 第三方库,价值2000元的学习资源泄露

程序媛可鸥

Python 程序员 面试

40行不到的Python代码实现超燃动态排序图,成为一名合格Python架构师

程序媛可鸥

Python 程序员 面试

模块九秒杀作业

novoer

「架构实战营」

架构师实战营王者荣耀商城异地多活架构设计

刘洋

#架构实战营 「架构实战营」

一个LabVIEW控件,生成模拟波形效果

不脱发的程序猿

数据可视化 LabVIEW 生成模拟波形效果

自己动手写Docker系列 -- 5.1实现容器的后台运行

Docker

一个用于学习KVM的迷你虚拟机

ScratchLab

虚拟机 虚拟化 kvm VT-x

【面试-经验之谈】面霸是如何养成的,他的路子真的野

测试猿温大大

面试 涨薪 测试工程师

bigdata作业2

Pyel

掌握《网络》,见微才能知著

蔡农曰

TCP https 网络 HTTP TCP/IP

腾讯一面:说一说 MySQL 中索引的底层原理

老周聊架构

MySQL 3月月更

当 DDD 遇上 DCI(Data, Context, Interactive)架构模式_ArchSummit_张晓龙_InfoQ精选文章