DCI es un paradigma y, por lo tanto, mucho más que una forma de diseñar una aplicación. Es una forma de pensar sobre el modelado y el código de estructuración. Una de las partes importantes de DCI es mantener lo que el sistema es (el modelo de dominio) y lo que hace el sistema (funcionalidad). DCI no es un enfoque diferente para resolver el mismo problema que MVC, por lo que su primera pregunta no puede ser respondida. Puede usar MVC y DCI simultáneamente, lo cual no es una coincidencia ya que Trygve Renskaug es el padre de MVC y DCI. Recientemente ha respondido similar question a esto en el grupo de google 'composición de objetos'.
El ejemplo que ha vinculado viola algunas de las ideas básicas, como mantener los roles privados en los contextos, y tampoco pude encontrar un solo contexto, pero eso podría deberse a que pasé poco tiempo navegando por el código .
No sé RoR yo mismo así que no puedo darle un ejemplo de RoR, pero si va al fullOO encontrará ejemplos escritos en diferentes idiomas, incluyendo Ruby y Marvin, el primer idioma diseñado para DCI.
EDIT No hay una respuesta simple a la pregunta "¿Qué es DCI?" DCI es un paradigma, al igual que OOP es un paradigma. Ambos tienen las mismas raíces y responder a la pregunta anterior es tan complicado como responder "¿Qué es la programación orientada a objetos?". Las cosas son aún más complicadas por el hecho de que DCI está orientado a objetos y OOP en todos los principales lenguajes de OO está realmente orientado a clases y no orientado a objetos. DCI busca producir código donde la interacción entre los objetos en tiempo de ejecución sea visible en el código en tiempo de compilación y en términos más generales intente simplificar el razonamiento sobre el comportamiento del tiempo de ejecución al leer el código. El site al que me he vinculado anteriormente está dedicado a explicar de qué se trata DCI y también enumera ejemplos en varios idiomas. Ruby siendo uno de ellos
EDIT Hay un book en ruby y DCI en su camino.El autor es bastante activo en composición de objetos y perspicaz
su pregunta es muy amplia y allí por muy difícil de responder. Hay bastantes lugares en los que parece que aún no se ha obtenido lo que DCI está haciendo aún más difícil responder algunas de las preguntas en un contexto DCI. Puedo ayudarte con las cosas de DCI si ese es el objetivo, pero necesitarás reducir el alcance, luego –
. Me gustaría principalmente entender qué * es * DCI. En cuanto a la implementación de Rails, un ejemplo simple o incluso una explicación de dos líneas sería genial. – GeReV
Gran pregunta. No supe hasta que leí esto que había un nombre para el paradigma que he estado anhelando últimamente.He estado mirando el código que mantengo (que no escribí) y pensando "Lo que esto necesita es una separación de clase entre los datos y el comportamiento". Supongo que esto es precisamente lo que DCI está tratando de hacer. –