Ich habe unzählige Beiträge zu Unterschieden zwischen Entitäten und Wertobjekten gelesen, und obwohl ich denke, dass ich zumindest konzeptionell verstehe, wie sich die beiden unterscheiden, scheint es, dass Autoren in einigen dieser Beiträge ein bestimmtes Domänenkonzept einfach deshalb als VO betrachten ist unveränderlich (daher wird sich sein Zustand zumindest innerhalb dieses bestimmten Domänenmodells niemals ändern).
Stimmen Sie zu, dass dieses Objekt niemals eine Entität sein sollte, wenn sich der Status eines Objekts innerhalb eines bestimmten Domänenmodells niemals ändert? Warum?
domain-driven-design
bckpwrld
quelle
quelle
Antworten:
Nach dem Buch (Evans, 2004) heißt es: "Ein Objekt, das hauptsächlich durch seine Identität definiert wird, wird als ENTITÄT bezeichnet." Diese Definition ist unabhängig davon, ob das Objekt veränderlich oder unveränderlich ist. Ich denke, es ist viel weniger wahrscheinlich, dass ein unveränderliches Objekt eine Entität in einer bestimmten Domäne ist, daher ist es eine nützliche Heuristik, um zu entscheiden, ob ein Objekt ein "Wertobjekt" oder eine "Entität" ist, aber das ist nicht Teil der Definition.
Angenommen, Sie haben eine Entität, die einen Mitarbeiter vertritt, der möglicherweise einen direkten Vorgesetzten hat oder nicht. Wenn Sie sich dafür entscheiden, die Idee, keinen direkten Supervisor zu haben, als Referenz auf ein "null" Supervisor-Objekt darzustellen, wird das "null" Supervisor-Objekt vernünftigerweise als Entität betrachtet. Und Sie könnten dieses "Null" -Objekt wahrscheinlich unveränderlich machen.
quelle
Ich habe dies so gelesen, dass ein Wertobjekt ein Objekt ist, das keine Identität für sich hat und nichts damit zu tun hat, dass sich sein Zustand ändert oder nicht ändert. Dies macht den Unterschied zwischen einer Entität und einem Wertobjekt aus, dass eine Entität einen Primärschlüssel hat, während ein Wertobjekt dies nicht tut. Es hat einen Fremdschlüssel für die Entität, zu der es gehört.
http://lostechies.com/joeocampo/2007/04/23/a-discussion-on-domain-driven-design-value-objects/
Ich kann die Eigenschaften des Wertobjekts weiterhin ändern, es muss jedoch niemals unabhängig von seiner Entität identifiziert werden.
quelle