J'ai lu d'innombrables articles sur les différences entre les objets Entités et Valeur et bien que je pense qu'au moins conceptuellement, je comprends comment les deux diffèrent, il semble que dans certains de ces articles, les auteurs considèrent qu'un concept de domaine particulier est une VO simplement parce qu'il est immuable (ainsi son état ne changera jamais, au moins dans ce modèle de domaine particulier).
Êtes-vous d'accord que si l'état d'un objet ne changera jamais dans un modèle de domaine particulier, cet objet ne devrait jamais être une entité? Pourquoi?
domain-driven-design
bckpwrld
la source
la source
Réponses:
D'après le livre (Evans, 2004), "Un objet défini principalement par son identité est appelé une ENTITÉ". Cette définition est indépendante du fait que l'objet soit mutable ou immuable. Je pense qu'il est beaucoup moins probable qu'un objet immuable soit une entité dans un domaine donné, c'est donc une heuristique utile pour décider si un objet est un "objet de valeur" ou une "entité", mais cela ne fait pas partie de la définition.
Par exemple, supposons que vous ayez une entité représentant un employé, qui peut ou non avoir un superviseur direct. Si vous décidez de représenter l'idée de ne pas avoir de superviseur direct comme référence à un objet superviseur "nul", alors l'objet superviseur "nul" est raisonnablement considéré comme une entité. Et vous pourriez probablement rendre cet objet "nul" immuable.
la source
La façon dont j'ai lu ceci est qu'un objet de valeur est un objet qui n'a pas d'identité en soi et qui n'a rien à voir avec son état changeant ou non. Cela fait la différence entre une entité et un objet valeur qu'une entité possède une clé primaire, contrairement à un objet valeur; il aura une clé étrangère pour l'entité à laquelle il appartient.
http://lostechies.com/joeocampo/2007/04/23/a-discussion-on-domain-driven-design-value-objects/
Je peux toujours changer les propriétés de l'objet de valeur, mais il n'a pas besoin d'être identifié indépendamment de son entité.
la source