Re: Валидация объектов
От: diez_p  
Дата: 24.01.17 13:03
Оценка:
Здравствуйте, snaphold, Вы писали:

S>Как запретить сохранение объектов в базу если объект непровалидирован?


Идея такая:
Выделить типы объектов и их комбинации. Например есть типы Human, Machine и Kiborg наследует типы Human, Machine. Ассоциировать с каждым типом валидатор. При необходимости получать валидатор по типу объекта и валидировать сам объект.
Т.е. у вас будут валидаторы HumanValidator, MachineValidator и KiborgValidator. В языках с единственным наследованием классов KiborgValidator, может агрегировать типы HumanValidator и MachineValidator.
Хранить в базе IsValid — плохая идея, т.к. валдиность это вычисляемое свойство в зависимости от валидатора. Например изменились бизнес правила, поменялся валидатор текущие объекты в базе надо обновить до валидных, isValid в этом случае абсолютно бесполезен.

Схема усложняется если валидатор не stateless, а имеет состояние в зависимости от нескольких объектов.
Отредактировано 24.01.2017 13:06 diez_p . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.