Следующая цитата от Эрика Эванса, где он описывает, что такое Объект Значения:
Объект, который представляет описательный аспект домена без концептуальной идентичности, называется ОБЪЕКТОМ ЦЕННОСТИ.ЦЕННЫЕ ОБЪЕКТЫ создаются для представления элементов дизайна, о которых мы заботимся только о том, кем они являются, а не о том, кем или чем они являются.
Еще одна ссылка на это - статья MSDN о Домене, управляемомДизайн , написанный Дейвом Лариби, где он говорит:
Значимые объекты - это дескрипторы или свойства, важные в области, которую вы моделируете.В отличие от сущностей, они не имеют идентичности;они просто описывают вещи, которые имеют идентичность.Вы изменяете сущность под названием «тридцать пять долларов» или увеличиваете остаток на счете?
Используя эти две ссылки, я бы сказал, что Валюта должна быть Объектом Значения, а не сущностью,Валюта не имеет какой-либо идентичности во времени - это описательное свойство сущности человека - валюта, в которой они предпочитают выставлять счета, я полагаю.
И нет никаких проблем в использовании того же самогоОбъект значения в двух разных агрегатах.
Еще один приятный пост, который может вам помочь, был написан Джимми Богардом
После вашей дополнительной информации:
Я бы все же сказал, что Валюта лучше всего смоделировать как Объект Значения - он все еще кажется неизменным.
Когда вы загружаете свой агрегат Person, вам требуется, чтобы часть этого запроса загружала Объект Значения Валюты, который являетсяосновная валюта магазина.
Для обновления валюты в базе данных (например, для изменения валюты основного магазина) или для перечисления доступных валют вам не нужно проходить через агрегат, агрегаты не являются обязательнымидля любого доступа к данным - они служат только для координации отношений между сущностямиуправляемым образом.