Design patterns DCI-数据、上下文和交互-MVC的继承者?
向一个组织推销它的最佳描述是什么 它是由…的创造者创造的Design patterns DCI-数据、上下文和交互-MVC的继承者?,design-patterns,dci,Design Patterns,Dci,向一个组织推销它的最佳描述是什么 它是由…的创造者创造的 它真的是MVC的继承者还是仅仅是另一种模式?它的优点和缺点是什么?我得到的印象是,它与其说是MVC的继承者,不如说是一个补充,例如,图5中的这两个都有。我认为这有助于使模型和控制器之间的区别更加合理,或者可能有助于控制器的不同部分或模型的不同部分之间的区别 基本思想似乎是为数据类的特定操作拆分逻辑,并将其移动到traits/mixin/whatever,每个(用户)操作一个。您将有许多小代码段,而不是几个大代码段。另外,听起来添加新的mi
它真的是MVC的继承者还是仅仅是另一种模式?它的优点和缺点是什么?我得到的印象是,它与其说是MVC的继承者,不如说是一个补充,例如,图5中的这两个都有。我认为这有助于使模型和控制器之间的区别更加合理,或者可能有助于控制器的不同部分或模型的不同部分之间的区别
基本思想似乎是为数据类的特定操作拆分逻辑,并将其移动到traits/mixin/whatever,每个(用户)操作一个。您将有许多小代码段,而不是几个大代码段。另外,听起来添加新的mixin应该比向基类添加功能“更好”。个人行动代码可能会(我认为)更分散,但不同动作的代码应该更清晰和明显分离。 < P>它完全是我在现代C++设计中的基于策略的Andrei Alexandrescu设计,但是工作更低级,DCI看起来像是一个包含部分方法论的架构(用例驱动设计)。Trygve在 创建DCI是为了解决面向对象中的一个问题:审查OO代码太难了 OO中一个用例的代码通常分布在许多类之间。要理解代码是如何工作的,还必须了解运行时中对象之间的关系。这些关系不是在代码中设置的,它们取决于具体情况 DCI建议将给定用例的代码从类中分离出来,放入称为上下文的不同工件中。不同类的对象可以在此上下文中进入关系,并在具有不同角色的情况下参与交互 DCI的全部目的是使OO代码更具可读性
这就是我的想法。一个好问题,也是一个经常出现的问题。简而言之,这是一个基于Kay、Dahl和其他人的OO创建思想的范例。正如你所注意到的那样,它是由Trygve Reenskagug创建的,其中有几个目标。其中一个目标是使信息作战成为该计划的一流公民。(不是磁盘操作中的IO,而是两个不同对象之间的所有通信)。DCI的另一个重要目标是将系统的功能(功能/行为)与系统的功能(数据)分开。我认为提高系统理解能力对任何组织来说都是一个巨大的胜利,但您也可以证明DCI是MVC的一个改进,这是由于以下其他因素:
个人行为的代码将不会太分散,因为它们将被放到上下文中。答案的最后一部分与DCI的目标相矛盾。DCI的一个明确目标是将算法的各个部分保持在一个位置。通常通过将用例的实现放在一个地方来进行示例,您没有回答这个问题。是的,链接为+1。我实际上是在寻找itNice的答案,我想一点一点地补充一下,其中一个角色是简化业务逻辑中的更改,因为上下文表示实际的业务逻辑和哑模型对象之间的交互。因此,如果业务逻辑出现在一个地方,那么很容易更改它,这也将减少引入的bug数量。