В DDD, каковы реальные преимущества объектов стоимости? - PullRequest
11 голосов
/ 01 марта 2009

Я дошел до того, что понимаю, что у объектов-сущностей есть идентификатор, а у объекта-значения нет, но в наиболее распространенном примере у вас есть объект-человек, к которому прикреплен объект-значение адреса. В чем заключается большое преимущество создания отдельного объекта адреса вместо того, чтобы просто сохранять свойства адреса в объекте Person?

Ответы [ 3 ]

9 голосов
/ 18 апреля 2009

В дополнение к уже упомянутым вещам, Грег Янг имеет большое значение из того факта, что, поскольку они неизменны, вы можете проверять их при создании и никогда больше не беспокоиться о проверке. Если состояние нельзя изменить, то вы знаете, что оно всегда действует.

5 голосов
/ 01 марта 2009
  • Объекты-значения могут использоваться в качестве аргументов для других методов в других классах
  • Это может сделать ваш дизайн более четким
  • Это может помочь с оптимизацией производительности (пример: структура веса в полете)
  • Объекты значений могут быть повторно использованы в различных объектах. (пример: объекты пользователя и местоположения с объектами значения адреса.

Не забывайте, что «отсутствие идентификатора» - это не единственное различие между объектами-значениями и сущностями, ведь неизменность также очень важна.

1 голос
/ 01 марта 2009

Думайте об этом как о компоненте многократного использования. Вы можете превратить это в домашний адрес, рабочий адрес без особых дополнительных усилий. Вы можете использовать его для отделения других систем от сущности человека. Скажем, вы представляете субъект бизнеса. У него также будет адрес.

С этим предметом связан еще один важный предмет: композиция против наследования

...