Сущность (скажем, UserEntity) имеет жесткие правила для своих свойств и может существовать в двух состояниях — сохраненном (что означает, что он имеет id
) и предварительно сохраненном (что означает, что у него еще нет id
).
Согласно ответу на этот вопрос о том, как обрабатывать требуемые свойства, «настоящий» UserEntity должен создаваться только с идентификатором
, переданным его конструктору.
Однако, когда мне нужно создать новый UserEntity
из информации, отправленной браузером, мне нужно иметь возможность проверить информацию перед сохранением в БД.
Раньше я просто создавал пустую UserEntity (без id
), устанавливал новые свойства и проверял их, но в этом новом, более безопасном способе мышления о сущностях, Я никогда не должен создавать новый UserEntity без его id
.
Я не хочу создавать ДВА места, которые знают, как проверить свойства моего UserEntity, потому что, если они когда-либо изменятся (а они будут), это удвоит количество кода для обновления и удвоит шансы на ошибки.
Как эффективно централизовать знания о проверке свойств моего объекта?
Примечание
Одна идея, которая у меня была, отражена в этом вопросе, в котором я рассматриваю возможность хранения негосударственных свойств, таких как электронная почта, пароль и имя, в стандартизированном объекте-значении, который знал бы о правилах для его свойств, которые могут использовать различные сервисы, такие как контроллер, валидатор и репозиторий или картограф.