ИМХО - для того, чтобы бизнес-объект (BO) / сущность был действительным, необходимо выполнить 2 шага проверки:
Шаг 1: Самостоятельная проверка BO / Entity
- При этом мы проверяем только, является ли объект действительным с точки зрения его состояния F.Ex .: Если установлен почтовый индекс, то имеет ли он действительные символы, имеет ли он действительную длину и т. Д., Образуют проверки уровня BO / Entity. Но за пределами этого уровня проверки мы не сможем сказать, что BO / Entity действительны в вашем бизнес-домене и / или хранилище.
Как правило, BO / Entity будет способен обеспечить этот уровень проверки.
Шаг 2: проверка контекста
- В этом нам нужно проверить, является ли BO / Entity действительным в контексте хранилища, в котором оно сохраняется. F.Ex .: Действителен ли почтовый индекс для страны, в которой размещается / отправляется заказ и т. Д.
Для этой проверки может потребоваться участие некоторых или всех объектов в текущем контексте, чтобы убедиться, что BO / объект действителен.
Таким образом, чтобы сохранить сущности в чистоте, вам нужно будет разделить проверку на эти 2 шага - один выполняется самой сущностью, а второй - хранилищем, которое сохраняет / работает с сущностью.
НТН.