Каков наилучший способ написать соответствующие проверки для моделей домена в DDD? - PullRequest
0 голосов
/ 29 апреля 2020

Я слышал о разных способах написания валидации для моделей доменов, поэтому я хочу знать, какой из них лучше в дизайне, управляемом доменом.

  1. Некоторые люди говорят, что лучше проверить данные модели предметной области перед ее инициализацией (это означает, что проверки должны выполняться в связанных DTO).
  2. Некоторые люди говорят, что лучше проверять данные модели предметной области после их инициализации (это означает, что проверки должны запускаться на инициализированной сущности или модели предметной области).
  3. Кроме того, некоторые люди говорят, что все проверки должны выполняться внутри сущности (именно в установщиках или конструкторах)

Действительно Я привык писать комбинацию вышеуказанных проверок, но теперь я не уверен в этом. Что из них распространено и в основном более разумно?

1 Ответ

2 голосов
/ 30 апреля 2020

В проектировании, управляемом доменом, вы, скорее всего, увидите «объекты значений», которые гарантируют, что определенные ограничения будут выполнены во время инициализации, следовательно, в конструкторе самого объекта значения. Так как значения (по соглашению) неизменны в течение их срока службы, вы обычно не включаете сеттеры в их интерфейс.

DTO служат для другой цели, но механически похожи на объекты значений во многих пути. Таким образом, вы можете увидеть проверку в DTO в дополнение к проверке в модели домена.

У вас обычно нет проверки value в ваших сущностях. Сущность, как правило, содержит ссылки на значения (которые проверяют сами себя) или другие локальные сущности (проверенные в другом месте), поэтому проверка правильности ссылок находится в границах (ie, проверка на нулевое значение).

...