Структура валидации - PullRequest
0 голосов
/ 04 июня 2010

В одном из интервью моего друга попросили спроектировать платформу валидации, может кто-нибудь подсказать мне, как спроектировать эффективную каркас

Наш подход был интерфейс, имеющий весь метод и реализация класса всех методов

Ответы [ 2 ]

0 голосов
/ 04 июня 2010

Согласен с Питером. Вот хорошее введение в подход на основе аннотаций с использованием Spring. Также есть JSR303 , если вам интересно.

0 голосов
/ 04 июня 2010

Я не уверен, что понимаю ваш подход, для меня это звучит довольно расплывчато.

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

public enum Validation {
    NUMERIC,
    TWO_DECIMAL_PLACES,
    ...;
}

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface MyAnnotation {
    ...
    Validation[] validation() default { };
    ...
}

...
@MyAnnotation(
        ...
        validation = { Validation.NUMERIC, Validation.TWO_DECIMAL_PLACES })
public BigDecimal getCharge() {
    return Charge;
}

Во время выполнения аннотации могут обрабатываться с помощью внутреннего анализа бобов с PropertyDescriptor и Method.getAnnotation().

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...