2010-07-01 11 views
5

Todos los ejemplos de ICD que he visto parecen basarse en el objeto como el titular último de la información, y los límites de la transacción se definen dentro de los métodos.Ejemplo de persistencia DCI (datos, contexto, interacción)

Me gustaría ver un ejemplo de una aplicación persistente, donde hay algún tipo de capa de persistencia, es decir, donde puede haber copias de objeto duplicadas del almacenamiento de persistencia subyacente y donde un cambio a un objeto es un cambio a un copia que luego se conservará. ¿DCI trabaja para ese modelo en absoluto?

+0

cualquier aplicación que se puede implementar con OO puede implementarse con DCI. DCI _is_ OO pero impone restricciones sobre cómo hacer OO. Dicho esto, no hay objetos en una capa de persistencia, ni hay "copias de un objeto", hay clases en una capa de persistencia y múltiples objetos que representan la misma información. DCI no se preocupa por las clases (son una característica del lenguaje) y sincronizar diferentes representaciones de lo que se supone que es lo mismo es un problema ortogonal a todos los paradigmas que aceptan efectos secundarios (y se pueden resolver de varias maneras en ellos también) –

Respuesta

2

DCI realmente no se preocupa por la persistencia.

+0

Qué ¿eso significa? ¿Es una preocupación ortogonal, es decir, que DCI está fuera de ese alcance, porque no importa? ¿O es una preocupación válida que DCI no aborda? – nilskp

+2

La persistencia es siempre una preocupación válida, pero DCI es más un paradigma que una arquitectura. Entonces creo que es ortogonal. DCI tiene mucho que decir acerca de los datos, pero no tanto de dónde viene ni a dónde va. Supongo que incluso podría usar DCI en su capa de persistencia, en el sentido de que los datos persistentes son un caso de uso que comienza cuando el usuario selecciona Archivo/Guardar en el menú. – Guge

3

DCI es un paradigma y del mismo modo que se puede construir una aplicación utilizando cualquier otro paradigma con persistencia (excluyendo FP pura ya que la persistencia es un efecto secundario) también se puede con DCI. No se menciona en los ejemplos de DCI porque no es una preocupación del paradigma y no está relacionado con la comprensión del paradigma. (Eso dijo que no eres el primero en hacer la pregunta y no será el último, estoy seguro).

La preocupación de los datos persistentes es en general ortogonal a DCI. DCI trata de dividir el diseño en

  • Lo que el sistema es
  • lo que el sistema

El primero es el modelo de dominio y el segundo es la funcionalidad del sistema. Si "lo que el sistema es" se mantiene en la memoria, archivos planos o una base de datos es importante, pero una preocupación separada y generalmente se implementa utilizando restricted OO

+0

Lo que dices tiene sentido, pero creo que la razón por la que se menciona con tanta frecuencia es que, p. En el artículo de Artima, hay un uso explícito de los límites de las transacciones. Esto implica algo acerca de la persistencia y, como tal, deja a las personas con la pregunta. – nilskp

+0

@nilskp estuvo de acuerdo y ahí es donde interviene el OO restrictivo. La mayoría de los ejemplos de DCI omiten las partes restringidas de OO para abreviar. Estoy en un bote diferente que algunos de esos ejemplos, ya que tiendo a usar DCI uno un nivel más bajo que los ejemplos, así como Guge menciona en un comentario, podría usar DCI en la "capa" de persistencia. –

Cuestiones relacionadas