Eu li inúmeras postagens sobre diferenças entre objetos Entidades e Valor e, embora eu pense que pelo menos conceitualmente entendo como as duas diferem, parece que em algumas dessas postagens os autores consideram um conceito de domínio específico como um VO simplesmente porque é imutável (portanto, seu estado nunca será alterado, pelo menos dentro desse modelo de domínio específico).
Você concorda que, se o estado de um objeto nunca mudar dentro de um modelo de domínio específico, esse objeto nunca deverá ser uma entidade? Por quê?
domain-driven-design
bckpwrld
fonte
fonte
Respostas:
Seguindo o livro (Evans, 2004), "Um objeto definido principalmente por sua identidade é chamado de ENTIDADE". Essa definição é independente de o objeto ser mutável ou imutável. Eu acho que é muito menos provável que um objeto imutável seja uma entidade em um determinado domínio, por isso é uma heurística útil para decidir se um objeto é um "objeto de valor" ou uma "entidade", mas isso não faz parte da definição.
Por exemplo, digamos que você tenha uma entidade representando um funcionário, que pode ou não ter um supervisor direto. Se você decidir representar a idéia de não ter um supervisor direto como uma referência a um objeto de supervisor "nulo", o objeto de supervisor "nulo" será razoavelmente considerado uma entidade. E você provavelmente poderia tornar esse objeto "nulo" imutável.
fonte
A maneira como eu li isso é que um objeto de valor é um objeto que não tem uma identidade em si mesmo e que nada tem a ver com o seu estado mudar ou não mudar. Isso faz a diferença entre uma entidade e um objeto de valor que uma entidade possui uma chave primária, enquanto um objeto de valor não; ele terá uma chave estrangeira para a entidade à qual pertence.
http://lostechies.com/joeocampo/2007/04/23/a-discussion-on-domain-driven-design-value-objects/
Ainda posso alterar as propriedades do objeto de valor, mas ele nunca precisa ser identificado independentemente de sua entidade.
fonte