当前位置:  开发笔记 > 后端 > 正文

DCI - 数据,上下文和交互 - MVC的继承者?

如何解决《DCI-数据,上下文和交互-MVC的继承者?》经验,为你挑选了3个好方法。

将数据,上下文和交互(DCI)推广到组织的最佳描述是什么?

它是由MVC模式的创建者Trygve Reenskaug创建的.

它真的是MVC的继承者还是其他模式?它的优点和缺点是什么?



1> Guge..:

Trygve在https://vimeo.com/8235394上介绍了DCI

创建DCI是为了解决面向对象的问题:审查OO代码太难了.

OO中一个用例的代码通常分布在许多类之间.要了解代码的工作原理,还必须了解运行时对象之间的关系.这些关系不是在代码中设置的,它们取决于具体情况.

DCI建议的是,给定用例的代码从类中分离出来并放入称为上下文的不同工件中.不同类的对象可以在此上下文中建立关系,并参与具有不同角色的交互.

DCI的重点是让OO代码更具可读性!

这就是我如何推销它.


很好的答案,希望逐点补充说,其中一个角色是简化业务逻辑的变化,因为上下文代表了DUMB模型对象之间的实际业务逻辑和交互.因此,如果业务逻辑出现在一个地方,那么很容易改变业务逻辑,这也将减少引入的错误数量.

2> 小智..:

我得到的印象是它不是MVC 的继承者,而是一个补充,例如关于DCI的artima文章中的图5 都有.我认为它应该有助于使模型和控制器之间的区别更加清晰,或者可能在控制器的不同部分或模型的不同部分之间.

基本思想似乎是为数据类的特定操作拆分逻辑,并将其移动到traits/mixins/whatever,每个(用户)操作一个.你将拥有许多小块代码,而不是几个大块.此外,听起来添加新的mixin应该比向基类添加功能更"好".个别行动的代码可能(我认为?)更加分散,但不同行动的代码应该更明确,更明显地分开.


个别行动的代码将不那么分散,因为它们将被置于上下文中.
答案的最后部分与DCI的目标相矛盾.DCI的明确目标是将算法的各个部分保存在一个地方.通常通过将用例的实现保存在一个地方来实现

3> Rune FS..:

一个好问题和一个经常出现的问题.简短的回答是,它是基于Kay,Dahl和其他人的OO创始理念而自行设定的范例.它是由Trygve Reenskaug创建的,因为你注意到了几个目标.其中一个目标是使IO操作成为该计划的一等公民.(不是磁盘操作中的IO,而是两个不同对象之间的所有通信).DCI的另一个重要目标是将系统所做的事情(功能/行为)与系统(数据)分开

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有