在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 更大。
演讲提纲:
DCI 架构模式
Data,Context,Interaction
优缺点
DCI 是 DDD 的补充
类与对象的关系
DCI 与 DDD 的融合
ROLE 的建模
数据依赖管理
领域模型各部分的可组合性
实践案例
案例介绍
物理设计
领域模型设计
代码实现要点
小结
DCI 与 DDD 的融合
审视类与对象的关系
DCI 落地的核心是 ROLE 的建模
对于开发人员来说 DCI 的收益比 DDD 更大
听众受益点:
理解 DCI 架构模式
明白 DDD 和 DCI 的关系
清楚团队基于 DDD 落地 DCI 的方法
讲师介绍:
张晓龙
中兴通讯 资深软件架构师
Gomonkey 和 Go 语言 trans-dsl 作者,具有十多年软件架构和开发经验,近年专注 PaaS 和 5G 等大型项目的设计和开发,精通微服务契约测试。爱读书,爱运动,爱编程,爱分享,对于大型软件的重构具有丰富的实战经验。曾指导多个团队积极实践 DDD,包括开发领域和测试领域,取得了比较好的效果。
完整演讲 PPT 下载链接:
https://archsummit.infoq.cn/2019/shenzhen/schedule
评论