Я читал бесчисленные посты о различиях между сущностями и объектами-значениями, и хотя я думаю, что, по крайней мере, концептуально я понимаю, как они различаются, похоже, что в некоторых из этих постов авторы считают, что концепция конкретного домена является ВО, просто потому, что является неизменным (таким образом, его состояние никогда не изменится, по крайней мере, в рамках этой конкретной модели предметной области).
Согласны ли вы с тем, что если состояние объекта никогда не изменится в конкретной модели предметной области, то этот объект никогда не должен быть сущностью? Почему?
domain-driven-design
bckpwrld
источник
источник
Ответы:
Если верить книге (Evans, 2004), «объект, определяемый прежде всего своей идентичностью, называется сущностью». Это определение не зависит от того, является ли объект изменчивым или неизменным. Я думаю, что гораздо менее вероятно, что неизменяемый объект будет сущностью в данном домене, так что это полезная эвристика для определения, является ли объект «объектом значения» или «сущностью», но это не является частью определения.
Например, допустим, у вас есть субъект, представляющий сотрудника, который может иметь или не иметь прямого руководителя. Если вы решите представить идею отсутствия прямого супервизора в качестве ссылки на «нулевой» объект супервизора, то «нулевой» объект супервизора разумно считается сущностью. И вы, вероятно, могли бы сделать этот «нулевой» объект неизменным.
источник
Я прочитал это так, что объект-значение - это объект, который не имеет идентичности сам по себе и не имеет никакого отношения к изменению его состояния или его изменению. Это делает различие между сущностью и объектом значения тем, что сущность имеет первичный ключ, тогда как объект значения не имеет; у него будет внешний ключ к сущности, которой он принадлежит.
http://lostechies.com/joeocampo/2007/04/23/a-discussion-on-domain-driven-design-value-objects/
Я все еще могу изменить свойства объекта значения, но его не нужно идентифицировать независимо от его сущности.
источник