Что если значение нужно исправить?
Я знаю, что DDD предлагает создавать отдельные варианты использования для каждой бизнес-операции.
Представьте, что у вас есть совокупность игроков. Имеет адрес объекта значения.
DDD не позволяет создавать UpdatePlayer()
метод на PlayerApplication
слой. Вместо этого мы должны создать конкретные варианты использования, в которых заинтересован бизнес. Итак, вместо UpdatePlayer()
, Я хочу иметь RelocatePlayerTo(Address newAddress)
,
Что если после переезда я заметил, что допустил ошибку в newAddress? Как я могу настроить адрес? Например, я неправильно написал название улицы или ввел неправильный номер #.
Должен ли я создать новый вариант использования AdjustPlayerAddress
? И новый DomainEvent PlayerAddressHasBeenAdjusted
?
1 ответ
Что если значение нужно исправить?
Важное соображение: авторитетный источник данных - ваша модель или что-то еще?
Например, авторитетным источником моего адреса является реальный мир. Правильное написание зависит от всех видов вещей, которые не находятся под контролем модели. В этом случае мы действительно должны думать о том, что модель хранит в виде копии данных, которая, возможно, устарела.
В этой ситуации API для сущности будет стремиться к анемии (на самом деле, вы собираетесь написать все возможные причины, по которым адрес может измениться? И вы уверены, что я, как субъект, собираюсь быть готовым поделиться этим с вами?)
Однако для ситуаций, когда рассматриваемые данные принадлежат модели, гораздо более вероятно, что вам следует создавать конкретные потоки, которые описывают интересные бизнес-процессы на работе.
Иногда это поможет быть более точным о том, что происходит. Например, что произойдет, если вы думаете о ChangeOfAddress
просьба быть его собственной вещью? и тогда возникает проблема, как эта информация перемещается по всей вашей системе.
Основная идея не в том, что "ты не должен использовать CRUD", а в том, что язык должен соответствовать языку домена. Ваш основной источник для написания идей должны быть вашими экспертами.