Каковы фактические преимущества объектов value в DDD?
-
11-09-2019 - |
Вопрос
Я зашел так далеко, что понимаю, что объекты entity имеют идентификатор, а объект value - нет, но в наиболее распространенном примере у вас есть объект person, к которому привязан объект address value .В чем большое преимущество создания отдельного объекта address вместо того, чтобы просто сохранять свойства address внутри объекта Person?
Решение
В дополнение к уже упомянутым вещам, Грег Янг имеет большое значение тот факт, что, поскольку они неизменяемы, вы можете проверять их при создании и больше никогда не беспокоиться о проверке.Если состояние не может быть изменено, то вы знаете, что оно всегда действует.
Другие советы
- Объекты-значения могут использоваться в качестве аргументов для других методов в других классах
- Это может сделать ваш дизайн более четким
- Это может помочь с оптимизацией производительности (пример:схема взвешивания мухи)
- Объекты значений могут быть повторно использованы в разных сущностях.(пример:объекты пользователя и местоположения с объектами значений адреса.
Не забывайте, что "отсутствие идентификатора" - это не единственное различие между объектами value и сущностями, неизменяемость также очень важна.
Думайте об этом как о многоразовом компоненте.Вы можете превратить его в домашний адрес, рабочий адрес без особых дополнительных усилий.Вы можете использовать это, чтобы отделить другие системы от объекта person.Допустим, вы представляете бизнес-объект.В нем также будет указан адрес.
С этой темой связана еще одна важная тема:состав противнаследование