проблема проектирования Java для валидации - PullRequest
0 голосов
/ 17 мая 2011

У меня есть следующее требование: У меня есть система проверки.Одна из вещей, которые мне нужно сделать, - выполнить проверку файлов XML, что означает, что проверка тега X равна заданному значению.У меня есть несколько возможных сценариев, и в каждом сценарии есть свой набор тегов, которые необходимо проверить.

Я не хочу повторять один и тот же код при тестировании одинаковых тегов в разных сценариях.

Я пытаюсь найти дизайн, который решит эту проблему.

Есть идеи?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 17 мая 2011

Эмм, делегировать в общий метод?Например:

void validateAppleScenario(Xml xml) {
    validateFruit(xml);
    // validate apples specific tags
}

void validateBanana(Xml xml) {
    validateFruit(xml);
    // validate banana specific tags
}

void validateFruit(Xml xml) {
    // validate tags common to all fruit
}

Или, если вы предпочитаете, чтобы валидаторы были отдельными объектами, вы можете использовать подтип:

interface Validator {
    void validate(Xml xml);
}

class FruitValidator implements Validator {
    void validate(Xml xml) {
        // validate tags common to all fruit
    }
}

class AppleValidator extends FruitValidator {
    void validate(Xml xml) {
        super.validate(xml);
        // validate tags specific to apples
    }
}
0 голосов
/ 17 мая 2011

Один из подходов состоит в том, чтобы проанализировать XML в объект и затем проверить его в соответствии со спецификацией Bean Validation (JSR 303). Hibernate Validator является эталонной реализацией. * Вы можете аннотировать свои свойства с помощью ограничений проверки, а затем указать группы проверки , чтобы определенные поля проверялись в определенных сценариях.

Здесь больше информации здесь и здесь .

* Hibernate Validator отличается от Hibernate ORM. Они связаны только тем, что Hibernate ORM использует Validator для проверки ограничений.

0 голосов
/ 17 мая 2011

Я бы определил пары выражений XPath и ожидаемых результатов для сценариев.

Затем валидатор берет сценарий (объект), компилирует и применяет связанные выражения к документу xml.Это выберет элемент, и валидатор проверит, соответствует ли содержимое элемента ожидаемому значению.

...