В оригинальной книге DDD Эванс обсуждал возможность иметь значения, которые могут ссылаться на сущности.(Глава 5: «ЦЕННЫЕ ОБЪЕКТЫ могут даже ссылаться на СУЩНОСТИ»)
Я думаю, что все в общем и целом отказались от этой практики.Неизменность - это слишком мощная идея.Значения обычно ссылаются только на другие значения.Вместо того, чтобы ссылаться на сущность, мы включаем идентификатор сущности .
. Таким образом, обычное решение состоит в том, что вы моделируете код валюты как значение и сохраняете (копии) этого значения в своемЗначение цены.
Денежная единица становится ее собственной совокупностью.
Я бы не ожидал, что это произойдет.Как валюта меняется со временем?
Я думаю, вы обнаружите, что валюта довольно статична: со временем меняется CurrencyExchange
- какие валюты в настоящее время перечислены?какой курс сегодня?Каким был обменный курс два года назад?Какие политические единицы предпочитают эту валюту по состоянию на четверг?
Валюты по своей природе ближе к единицам измерения: футы, дюймы, метры, фунты, литры секунд.Метры - это единица измерения длины;Валюта - это единица измерения в измерении «деньги».
Как вы справляетесь с тем, что новые валюты могут быть добавлены в систему, и как вы можете выбирать между валютами в GUI?
Есть два возможных ответа на этот вопрос.
Если ваш домен является органом, для которого валюты активны в системе, то реестр валют / обмен валюты должен быть организацией первого класса вмодель вашего домена и управляет процессом изменения перечисленных валют.
Если ваш домен является , а не полномочным органом, то вы просто кэшируете копию информации, которую вы получаете от этого уполномоченного органа.Кэши обычно CRUD (PUT, GET, DELETE, возможно PATCH).