0

Я хочу знать, как проверить, находится ли объект домена в правильном состоянии, сохраняя его. Если объект имеет постоянную информацию - это понятно, так как я могу проверить сумму заказа в методе сохранения. Однако у постоянных неосведомленных объектов метод сохранения отсутствует. У них просто есть данные и поведение. Должен ли я полагаться на точность разработчиков или мне нужно как-то проверять все сущности-диаграммы, прежде чем сохранять их в базе данных?Проверка постоянных неосведомленных объектов домена

ответ

1

Возможно, я не понимаю вас правильно.

Я не уверен, как вы получаете «неосведомленный» объект. Это, похоже, противоречит основному принципу инкапсуляции. Единственный способ изменить состояние объекта должен быть через интерфейс. Обязанность интерфейса гарантировать, что все обновления состояния действительны. Итак, к вашему примеру, вам не нужно проверять сумму в операции save() (при условии, что здесь «сохранить» означает «сохранить»). Он должен быть обновлен в результате, например, звоните addProduct() (или что-то подобное - т. е. добавляя товар для заказа количества обновлений).

Является ли объект постоянным или временным не имеет значения - он должен всегда инкапсулировать обновление состояния через свой интерфейс.

Надеюсь, что это поможет - извини, если я неправильно понял.

+0

Благодарим за ответ. Постоянным невежественным я имею в виду, что объект ничего не знает о базе данных (нет метода сохранения, репозитории не отображаются в его методах поведения). Таким образом, поведение объекта - это только изменение состояния в памяти и ничего больше. Хм, вы написали, что изменение состояния объекта происходит только в методах поведения, означает ли это, что мне нужно, чтобы все свойства читались только для строгого ограничения модификаций объекта вне объекта. Хм, такая логика может вызвать множество методов в объекте. :) – Danil

+0

ОК, теперь я понимаю «постоянный невежественный». Имеет смысл и соответствует руководству DDD. Однако свойства не обязательно должны быть доступны для чтения. Но аксессуар записи должен гарантировать, что любой запрос на обновление состояния будет действительным. Угадаю, вы используете C# (поскольку q - это тегированная структура сущности). В этом случае вам просто нужно добавить логику проверки в аксессоры свойств 'set'. Это не значит добавить много новых методов (если, опять же, я не понимаю). НТН. – sfinnie

+0

Хорошо, спасибо, спасибо. Я не могу использовать сеттеры для проверки, поскольку он генерируется генератором EF POCO. В этом случае я могу сделать требуемые свойства (свойства, которые могут повредить целостность объектов) только для чтения и изменить их с помощью методов поведения. Хорошо, спасибо, вот ваши вопросы :). – Danil

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