DDD: ¿Los objetos inmutables también pueden ser entidades?

8

He leído innumerables publicaciones sobre diferencias entre Entidades y Objetos de valor y aunque creo que al menos conceptualmente comprendo cómo difieren las dos, parece que en algunas de estas publicaciones los autores consideran que un concepto de dominio en particular es una VO simplemente porque es inmutable (por lo tanto, su estado nunca cambiará, al menos dentro de ese modelo de dominio en particular).

¿Está de acuerdo en que si el estado de un objeto nunca cambiará dentro de un modelo de dominio particular, entonces este objeto nunca debería ser una entidad? ¿Por qué?

    
pregunta bckpwrld 08.01.2014 - 20:54

2 respuestas

3

De acuerdo con el libro (Evans, 2004), "Un objeto definido principalmente por su identidad se denomina ENTIDAD". Esta definición es independiente de si el objeto es mutable o inmutable. Creo que es mucho menos probable que un objeto inmutable sea una entidad en un dominio determinado, por lo que es una heurística útil para decidir si un objeto es un "objeto de valor" o una "entidad", pero eso es no es parte de la definición.

Por ejemplo, supongamos que tiene una entidad que representa a un empleado, que puede o no tener un supervisor directo. Si decide representar la idea de no tener un supervisor directo como referencia a un objeto supervisor "nulo", entonces el objeto supervisor "nulo" se considera razonablemente una entidad. Y probablemente podrías hacer que este objeto "nulo" sea inmutable.

    
respondido por el Aidan Cully 08.01.2014 - 22:54
2

La forma en que he leído esto es que un objeto de valor es un objeto que no tiene una identidad en sí mismo y que no tiene nada que ver con el cambio o no cambio de estado. Esto hace la diferencia entre una entidad y un objeto de valor que una entidad tiene una clave primaria, mientras que un objeto de valor no lo hace; Tendrá una clave externa para la entidad a la que pertenece.

enlace

Todavía puedo cambiar las propiedades del objeto de valor, pero no es necesario que se identifique de forma independiente de su entidad.

    
respondido por el Kevin 08.01.2014 - 22:30

Lea otras preguntas en las etiquetas