2009-07-02 7 views
6

Estoy leyendo http://en.wikipedia.org/wiki/Domain-driven_design en este momento, y solo necesito 2 ejemplos rápidos para entender qué son 'objetos de valor' y 'servicios' en el contexto de DDD.Diseño impulsado por dominio novato, explique brevemente 'objetos de valor' y 'servicios'

  • Objetos de valor: Un objeto que describe una característica de una cosa. Los objetos de valor no tienen identidad conceptual. Por lo general, son objetos de solo lectura y se pueden compartir utilizando el patrón de diseño Flyweight.

  • Servicios: cuando una operación no pertenece conceptualmente a ningún objeto. Siguiendo los contornos naturales del problema, puede implementar estas operaciones en los servicios. El concepto de servicio se llama "fabricación pura" en GRASP.

Valor objexts: alguien puede darme un ejemplo simple, por favor?

Servicios: si no es un objeto/entidad, ni pertenece al repositorio/fábricas, ¿es un servicio? No entiendo esto.

Respuesta

7

El ejemplo arquetípico de un objeto de valor es dinero. Es muy concebible que si construyes una aplicación internacional de comercio electrónico, desees encapsular el concepto de 'dinero' en una clase. Esto le permitirá realizar operaciones con valores monetarios, no solo con la suma, la resta, etc., sino también con las conversiones de divisas entre USD y, por ejemplo, el euro.

Dicho objeto Money no tiene una identidad inherente: contiene los valores que usted pone en él, y cuando se deshace de él, se va. Además, dos objetos Money que contienen 10 USD se consideran idénticos, incluso si son instancias de objeto separadas.

Otros ejemplos de objetos de valor son mediciones como la longitud, que puede contener un valor y una unidad, como 9.87 km o 3 pies. Una vez más, además de simplemente contener los datos, tal tipo probablemente ofrecerá métodos de conversión a otras mediciones y demás.

Los servicios, por otro lado, son tipos que realizan una operación de Dominio importante, pero que en realidad no se ajustan bien a los otros conceptos del Dominio basados ​​en más 'nombres'. Debe esforzarse por tener el menor número posible de Servicios, pero a veces, un Servicio es la mejor forma de encapsular un Concepto de dominio importante.

Puede leer más sobre Value Objects, Services y mucho más en el excelente libro Domain-Driven Design, que solo puedo recomendar.

3

Objetos de valor: un ejemplo típico es una dirección. La igualdad se basa en los valores del objeto, de ahí el nombre y no en la identidad. Esto significa que, por ejemplo, 2 objetos Person tienen la misma dirección si los valores de sus objetos Address son iguales, incluso si los objetos Address son 2 objetos completamente diferentes en la memoria o tienen una clave primaria diferente en la base de datos.

Servicios: ofrecen acciones que no pertenecen necesariamente a un objeto de dominio específico pero que actúan sobre objetos de dominio. Como ejemplo, estoy pensando en un servicio que envía notificaciones por correo electrónico en una tienda en línea cuando el precio de un producto cae por debajo de un cierto precio.

InfoQ tiene un libro gratis sobre DDD (un resumen del libro de Eric Evan): http://www.infoq.com/minibooks/domain-driven-design-quickly

Cuestiones relacionadas