ruby-on-rails – 什么是DCI,它如何适合Rails?

最近与同事一起讨论在Rails应用程序中设计和编写模型的不同方法,使我在DCI in the context of Rails年。

不过,即使在this example application之后,我似乎也不能围绕这个整个概念。

目前,在编写Rails应用程序时,我倾向于或多或少地“by the book”。

所以有一些我想问的事情 –

>什么是DCI,它与MVC一起使用简单的旧MVC(和Rails中的vanilla ActiveRecord)一起实现的优点是什么?
>如何在Rails中实现(或者换句话说,所有模块是什么)?

编辑

我想在RoR的上下文中进一步扩展我的问题 – 是Rails推荐的模型和控制器之间的另一个抽象级别?在不同规模的应用程序中有多普遍?

DCI是一个范例,因此不仅仅是设计应用程序的一种方式。这是一种思考建模以及结构化代码的方法。 DCI的重要部分之一是保持系统(域模型)以及系统的功能(功能)。 DCI解决与MVC相同的问题不是一个不同的方法,所以你的第一个问题不能真正回答。您可以同时使用MVC和DCI,这不是巧合,因为Trygve Renskaug是MVC和DCI的父亲。他最近在谷歌组的对象组合上回答了一个similar question

您链接的示例违反了一些基本思想,例如将角色保留在上下文中,我实际上找不到单个上下文,但这可能是因为仅花费短时间浏览代码。

我不知道RoR我的自我,所以我不能给你一个RoR的例子,但如果你去fullOO,你会发现用不同语言编写的例子,包括Ruby和Marvin是为DCI设计的第一种语言。

编辑对于“什么是DCI”,DCI是一个范例,就像OOP是一个范例一样,没有简单的答案。他们都有同样的根源,回答上述问题与回答“什么是面向对象编程”一样复杂。事情更复杂,因为DCI是面向对象的,所有主要OO语言中的OOP实际上是面向类,而不是面向对象。 DCI旨在生成代码,其中运行时对象之间的交互在编译时在代码中可见,并且在更一般的术语中,尝试从阅读代码更容易地理解运行时行为。与上述链接的site致力于解释DCI的所有内容,并列出了多种语言的示例。红宝石是其中之一

编辑有一个book在红宝石和DCI的方式。作者在对象组合和洞察力方面非常活跃

http://stackoverflow.com/questions/9677916/what-is-dci-and-how-can-it-fit-with-rails

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:ruby-on-rails – 什么是DCI,它如何适合Rails?