He leído innumerables publicaciones sobre diferencias entre entidades y objetos de valor y, aunque creo que al menos conceptualmente entiendo cómo difieren los dos, parece que en algunas de estas publicaciones los autores consideran que un concepto de dominio particular es un VO simplemente porque es inmutable (por lo tanto, su estado nunca cambiará, al menos dentro de ese modelo de dominio 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é?
domain-driven-design
bckpwrld
fuente
fuente
Respuestas:
Según el libro (Evans, 2004), "Un objeto definido principalmente por su identidad se llama 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 dado, por lo que es una heurística útil para decidir si un objeto es un "objeto de valor" o una "entidad", pero eso 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ía hacer que este objeto "nulo" sea inmutable.
fuente
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 que su estado cambie o no cambie. 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; tendrá una clave foránea para la entidad a la que pertenece.
http://lostechies.com/joeocampo/2007/04/23/a-discussion-on-domain-driven-design-value-objects/
Todavía puedo cambiar las propiedades del objeto de valor, pero no es necesario identificarlo independientemente de su entidad.
fuente