2

Все значение (1), что количественно модель домена была проверена на убедиться, что они узнаваемые значения, может быть дополнительно отредактирован на предмет пригодности к модели предметной области и было Вторит Back (4) до пользователя. Все эти проверки сразу же при входе. Однако есть класс , класс проверки которого должен быть отложен до последнего возможных моментов.Отложенного Validation

В The CHECKS Pattern Language of Information Integrity Уорд Каннингем адреса Deferred Validations (6) для целых объектов. Но мне это до сих пор не совсем понятно :(

Я понимаю, что отложенная проверка является очень подробной проверкой для сложного объекта. Итак, следует ли использовать эту проверку в методе тестирования или внутри свойства домена при следующем DDD? это может быть реализовано для пользовательского интерфейса?

а также, когда я должен избежать этого? Каковы минусы отсроченной проверки? может кто-нибудь, пожалуйста, объясните это на примере? заранее спасибо

ответ

2

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

E.g. Объект Person не может существовать без имени в большинстве доменов.

Однако не всегда возможно проверить инварианты объекта во время построения. Это тот случай, когда объект должен быть разрешен к существованию в неполном/переходном состоянии.

E.g.

Вы создаете приложение, которое позволяет пользователям размещать объявление. Перед публикацией объявления требуются все поля, но есть много деталей для заполнения, и вы хотите дать пользователю возможность сохранить незавершенную работу и продолжить ее позже.

В примере, приведенном выше, невозможно проверить объект Ad во время строительства, так как вы должны разрешить сохранение незавершенных объявлений.

В этом случае проверка объявления будет происходить только тогда, когда она будет опубликована.

Имейте в виду, что было бы много других способов решить вышеуказанную проблему в вашем домене. Например, нельзя было позволить объекту Ad находиться в недействительном состоянии и может вводить постоянный объект AdBuilder, который служит для представления процесса создания объявления состояния.

Кроме того, кто-то может также решить, что сохранение неполной работы не является проблемой для домена, и что неполная информация должна храниться на клиенте (например, localStorage в веб-браузере), пока он не будет готов к публикации.

+0

Спасибо за приятное объяснение. Можно ли набросать * AdBuilder * в соответствии с вашим примером? – MJK

Смежные вопросы