Voici un exemple d'un petit évaluateur et simplificateur d'expression arithmétique td5eval.zip. On cherche à ajouter un mécanisme de visiteur au code existant.
On souhaite écrire un visiteur Simplifyvisitor effectuant la même opération que la méthode simplify de l'interface Expr.
public class SimplifyVisitor { public Expr visit(Variable variable) { ... } public Expr visit(Constant constant) { ... } public Expr visit(Plus plus) { ... } public Expr visit(Minus minus) { ... } public Expr visit(Star star) { ... } public Expr visit(Slash slash) { ... } } }Le visteur sera appelé sur chaque noeud de l'arbre afin de simplifier l'expression courante et renvoyer l'expression simplifier
Expr expr2=expr.accept(new SimplifyVisitor());pour demander la simplification de l'expression.
On souhaite maintenant utiliser le même mécanisme de visiteur
pour écrire un visiteur ToStringVisitor
effectuant l'équivant de la méthode toString().
Pour cela, nous allons créer un interface Visitor
que les classes SimplifyVisitor et ToStringVisitor
implanteront.
Pensez au generics !