写点什么

当 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:006460

评论

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

收藏|多指标时序预测方式及时序特征工程总结

云智慧AIOps社区

人工智能 机器学习 深度学习 时间序列 时间序列预测

Ernie-SimCSE对比学习在内容反作弊上应用

百度Geek说

人工智能 AI技术 企业号十月 PK 榜

特种设备如何管理?不同岗位视角职责解析

PreMaint

设备管理 特种设备

关于HTTPDNS,你知道多少?

移动研发平台EMAS

阿里云 网络 HTTP #EMAS

JAVA逻辑运算符

默默的成长

前端 java; 11月月更

7.PGL图学习之图游走类metapath2vec模型[系列五]

汀丶人工智能

图神经网络 GNN GCN 11月月更

Python进阶(四十五)走进requests库

No Silver Bullet

Python requests 11月月更

Base64码常见操作(url链接文件转base64编码、本地文件转base64编码等)

共饮一杯无

Java base64 11月月更

聚焦亮点,西安人工智能治理委员会成立暨产业政策白皮书正式发布

极客天地

看完这篇线程、线程锁与线程池讲解,面试随便问!

小小怪下士

Java 程序员 面试 线程 线程池

旺链科技创始人刘涛荣登“中国区块链60人”榜单

旺链科技

区块链 数字经济 产业区块链 企业号十月PK榜

单实例并发超1个亿!阿里云飞天洛神云网络NLB网络型负载均衡性能重大突破

云布道师

负载均衡 阿里云 云网络

大厂前端面试考什么?

loveX001

JavaScript

主成分分析PCA与奇异值分解SVD-高维数据可视化以及参数n_components

烧灯续昼2002

机器学习 算法 降维 sklearn 11月月更

房产|1-10月全国房地产开发投资数据解读

前嗅大数据

Python进阶(四十六)Python3实现SMTP发送邮件详细教程

No Silver Bullet

发送邮件 SMTP pyhton 11月月更

DevOps 必备的 Kubernetes 安全清单

SEAL安全

Kubernetes DevOps 安全

JS模块化—CJS&AMD&CMD&ES6-前端面试知识点查漏补缺

loveX001

JavaScript

视频清晰度优化指南

得物技术

深度学习 算法 H.265 视频质量 图像超分

Python进阶(四十七)python3使用pyinstaller实现将py文件打包成exe文件

No Silver Bullet

Python pyinstaller 11月月更

CSS学习笔记(八)

lxmoe

CSS 前端 学习笔记 11月月更

常见用的设计模式以及实战

想要飞的猪

设计模式 spring设计模式

js事件循环与macro&micro任务队列-前端面试进阶

loveX001

JavaScript

解析 RocketMQ 多样消费功能-消息过滤

阿里巴巴云原生

阿里云 RocketMQ 云原生

CSS学习笔记(九)

lxmoe

CSS 前端 学习笔记 11月月更

Awesome MegEngineer 英雄招募帖,开源社区专属权益等你来领

MegEngineBot

深度学习 开源 MegEngine 开发者福利

「Go易错集锦」意外的变量隐藏

Go学堂

golang 程序员 个人成长 常见错误 隐藏变量

kubernetes下jenkins实战maven项目编译构建

程序员欣宸

DevOps jenkins 11月月更

初步探索GraalVM--云原生时代JVM黑科技

京东科技开发者

Java lua jdk 云原生 GraalVM

房产|2022年10月房价数据出炉!房价上涨的城市仅有…

前嗅大数据

【C语言】goto 关键字

謓泽

11月月更

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