2010-08-25 32 views
5

Soy realmente nuevo en DDD e intento comprender algunos de los conceptos.Modelado de dominio, objetos de dominio en DDD

¿Podría alguien explicarme la idea detrás del modelado de dominios en DDD.

Ya he pasado por la explicación de wikipedia: http://en.wikipedia.org/wiki/Domain_model pero todavía parece que hay algunas áreas grises en mi comprensión.

Sobre la base de lo que he entendido, el modelado de dominio implica la construcción de un modelo de negocio en torno a las entidades para expresar sus relaciones, expresar las entidades que participan en el modelo etc ..

No es esto algo que ha sido en la práctica ¿siempre? en el mundo orientado a objetos, modelas entidades comerciales en clases, objetos, etc. y construyes el software alrededor de esto.

Lo que no entiendo es el énfasis que Domain Modeling pone en DDD. ¿Es el mismo modelo de objeto/clase que encuentras en el mundo OO, o es algo nuevo para DDD? ¿Cómo se diferencia del diseño/modelado orientado a objetos?

Sus respuestas son muy apreciadas.

Respuesta

6

Una distinción es que una implementación "adecuada" del Domain Model Pattern en DDD está aislada de preocupaciones transversales.

Por ejemplo, no contiene nada que ver con bases de datos u otra persistencia. Donde contiene la lógica de validación, es la validación del negocio, no "¿el nombre excede la longitud de la columna?" validación.

La idea es que el modelo de dominio encapsula "el negocio" - en términos de negocio ("lenguaje ubicuo"), dentro de lo posible - y expone los aspectos relevantes de la empresa a "el programa" sin consentir a la necesidades del software.

Por otro lado, "el software" se refiere a IO, UI y similares, pero delega toda la lógica comercial al modelo de dominio.

En principio, puede envolver su modelo de dominio en un ensamblaje y usarlo en múltiples aplicaciones. Cuando cambian las reglas de negocio, como lo hacen, tiene un lugar muy lógico para afectar los cambios (porque el modelo es una representación 1: 1 o casi así de los aspectos relevantes del negocio y se describe en los mismos términos que el negocio).

1

El dominio en DDD no necesita implementarse en OO. En mi experiencia, un modelo de dominio OO es generalmente el mejor, pero hay ejemplos muy válidos de situaciones en las que puede no serlo.

Puede implementar un dominio en las reglas, con un motor de reglas (ejemplo en los Países Bajos donde se hace esto para una aplicación de hipoteca grande). O puede hacerlo en un lenguaje funcional. La esencia es que su dominio, en la forma en que se implemente, está aislado de lo que generalmente llamo los aspectos técnicos de su aplicación (o, como lo llama la respuesta anterior, preocupaciones transversales, aunque creo que bien puede haber preocupaciones transversales dentro de un dominio). Una capa de aislamiento, que puede implementarse utilizando adaptadores, hace que el dominio sea lo más posible, incluso completamente, independiente de los aspectos técnicos. Esta capa usualmente aprovecha patrones como Facade y Observer.

Cuestiones relacionadas