Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top