Skip to content

Latest commit

 

History

History
50 lines (26 loc) · 2.76 KB

14.精读架构设计之DCI.md

File metadata and controls

50 lines (26 loc) · 2.76 KB

014.精读架构设计之 DCI.md

DCI

  • DCI 数据场景交互(Data Context Interactions) 重点关注数据的不同场景的交互行为

面向系统对象系统状态和行为的一种范式设计

  • DCI 基于深层次的反射和元编程

  • 对比 AOP(面向切面编程)

  • DCI 反映了混合风格策略,实现多范式设计的许多简单目标,将过程逻辑和对象逻辑分开,具有更强的耦合和内聚效果

DCI 诞生

  • 原因: 传统 mvc 代码剧增的交互需求,代码可读难度增强,面向对象的思想表达交互行为,不断增加会导致对象的封装内聚性增加,交互逻辑在不同对象跳转,对象之前的嵌套关系过于复杂。

  • 把数据和交互分开,额外增加场景,交互就是场景,场景获取数据进行交互,有效将视图和数据进行隔离,不断抽象隔离分工

  • OO 和 MV*的盛行,出现了很多概念、模式和实践,DCI 作为 MVC 的补充,其本质与 MVC 是十分的相似的, 试图引入函数式编程的一些概念,平衡 OO、数据结构和算法模型,起到了不断降低耦合度的作用,同时一些Mixins. Mutiple dispath.DI(依赖注入).面向切面编程(AOP)也是好的设计模式。

  • 作者架构设计体会

架构强调职责分离, 通过分层和依赖原则,解决程序内(不同模块)程序外(多个应用)互相通讯问题。 了解不同架构方式才能衡量采用不同的技术方案 程序必须遵循的架构 符合软件工程的思想,亘古不变

  • 对于关注点不同,面向对象不一样,DCI 面向对象系统状态和行为的一种范式设计

  • DCI 基于 AOP 深层次的元编程(面向接口编程), 通过接口之间的联系将场景和数据联系起来,组合应用于不同的业务场景,促使系统内聚效果和松耦合

结合 DCI 思考

  • 日常业务,如使用多套底层图表库,怎么去支持不同的库之前的快速切换和接入

  • 替未来考虑,留下能拓展的空间(不是提早或者过度优化,这里是为后面的加入考虑)

  • 拓展业务增强业务功能

数据模型为 Data,增强的业务功能抽象成不同的场景

不同类型切换转换的行为过程作为一个个的切片,切片间必须独立和松耦合,不然后续没法切换,因为依赖关系过多

面向接口编程封装一层同一接口,利用面向接口的父类引用指向子类对象,通过(implements)接口接入

summary

  • DCI(Data Context Interactions) 是一种特别关注行为的设计模式(行为模式),关注不同的数据接入不同场景的交互行为,是面向对象和行为的一种范式设计,同时 DCI 也会借鉴 AOP 的一些思想和接口设计思想去朝着高内聚低耦合的方向去行走