Pour peindre un scénario, considerer le logic-omitted-Service suivant
public class Service {
private Validator validator;
public void submit(Foo foo) {
if (!validator.isValid(foo)) {
log.warn("invalid foo");
} ...
}
}
public interface Validator {
boolean isValid(Foo foo);
}
Le problème est que seul le Validor
lui-même sait la raison pour laquelle la validation échoue. Je vois seulement deux approches viables pour se concentrer sur cette raison. Soit le Validator
- journalise lui-même la condition d'échec
- retourne un objet complexe contenant une chaîne de caractères raison et un booléen isValid.
La première option est bonne mais laisserait le Service
dans l'ignorance de la réelle exécution du journal, et la seconde introduirait une redondance ennuyeuse et une utilisation plus complexe.
Laquelle préférer, ou existe-t-il une meilleure approche?