2010-06-04 5 views
0

Dans une interview de mon ami a été invité à concevoir un cadre de validation, peut-on me donner idée de concevoir un cadre efficacecadre de validation

Notre approche était une interface ayant toutes les méthodes et implementaion de classe de toutes les méthodes

+0

Qu'est-ce qui est en cours de validation et contre quoi? Je peux penser à toutes sortes de validations de la correspondance de modèles aux moteurs de règles d'affaires ici, pourriez-vous ajouter un peu plus de détails, s'il vous plaît. – Esko

+0

Désolé de ne pas mettre tous les détails en évidence, Je parlais de la validation sur des formulaires comme le nom, les identifiants de courrier, le numéro, donc nous devons créer un cadre général pour faire tout cela. – Pedantic

Répondre

0

Je ne suis pas sûr de comprendre votre approche, cela me semble assez vague.

J'irais avec une approche basée sur l'annotation. Différentes classes de validations avec des paramètres spécifiques peuvent être définies dans une énumération, puis liées à des propriétés spécifiques via des annotations.

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; 
} 

Lors de l'exécution, les annotations peuvent être traitées en utilisant l'introspection de haricot, avec PropertyDescriptor et Method.getAnnotation().

J'ai récemment implémenté une version simple de ceci dans notre propre projet, mais il y a plusieurs exemples robustes autour (avec éventuellement une implémentation différente), par ex. à Hibernate et au printemps.

0

D'accord avec Peter. Voici un nice introduction à l'approche basée sur l'annotation en utilisant Spring. Il y a aussi JSR303 si cela vous intéresse.

Questions connexes