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:006085

评论

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

有内味了!阿里内部Tomcat高阶调优笔记成功刷新了我的认知

Java架构之路

Java 程序员 架构 面试 编程语言

区块链农产品溯源--实现农产品全程溯源

CECBC

食品溯源

Kafka底层原理剖析(近万字建议收藏)

五分钟学大数据

大数据 kafka

限量!腾讯高工用4部分讲清楚了Spring全家桶+微服务

996小迁

Java 架构 面试 springboot SpringCloud

【函数计算实践】阿里云函数计算初探

程序员架构进阶

阿里云 架构 函数计算 28天写作 弹性扩容

「产品经理训练营」作业01:如果公司要招一个高级版的你

狷介

产品经理训练营

[如果公司要招一个高级版你]给资深/晋升后的岗位写一个理想岗位模型(Job Model)

Geek_lot02c

产品经理训练营

给现实深情拥抱,向产业洪流奔跑:华为云AI的2020

脑极体

基于gRPC的注册发现与负载均衡的原理和实战

万俊峰Kevin

微服务 go-zero Go 语言

一文带你学会AQS和并发工具类的关系2

伯阳

Java AQS 多线程 lock

中国工业的基础设施“重化工业”是怎么发展起来的

JiangX

供应链 工业 28天写作 制造

没搞清楚网络I/O模型?那怎么入门Netty

Java 后端 io

Kubernetes安装篇(上):基于Minikube方式部署本地环境

xcbeyond

Kubernetes 安装 minikube 28天写作 Kubernetes从入门到精通

数字人民币支付新选择 没有网络时也能使用

CECBC

数字红包

GMT UTC CST ISO 夏令时 时间戳,都是些什么鬼?

YourBatman

ISO 时间戳 GMT UTC

基础篇-http协议《http 简介、url详解、request》

清菡软件测试

测试

现在就开始倒数2030了? 华为的这条线索不能错过

脑极体

面试官:如果让你设计一个高并发的消息中间件,你会怎么做?

冰河

并发编程 高并发 消息队列 消息中间件

第一周作业

Geek_72d5ab

HTML(二)——用html设置文本

程序员的时光

程序员 28天写作

大厂必问Redis:肝完这份阿里出品“Redis神技”还说你不会Redis?

Java架构之路

Java 程序员 架构 面试 编程语言

「回血赠书」Python入门书单,新年全力扬帆

博文视点Broadview

CopyOnWriteArrayList 读写分离,弱一致性

叫练

弱一致性 读写分离; Vector; fail-fast; fail-safe

中国区块链行业人才缺口将达75万以上

CECBC

区块链人才

下一代消息队列pulsar到底是什么

比伯

Java 编程 架构 面试 计算机

给跨专业程序员的一些建议

Ryan Zheng

架构师训练营第八周作业

zamkai

限量!阿里甩出878页性能优化笔记阿里甩出878页性能优化笔记!

Java架构之路

Java 程序员 架构 面试 编程语言

运维数智化时代——京东数科AIOps落地实践(一)

京东科技开发者

运维自动化 AIOPS

量化交易自动炒币机器人系统开发搭建

薇電13242772558

策略模式 区块链+

案例研究之聊聊 QLExpress 源码 (九)

小诚信驿站

聊聊架构 28天写作 QLExpress源码 聊聊源码

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