Bonjour
je n'arrive pas a contacter directement l'auteur (régis pouiller) de la page
http://rpouiller.developpez.com/tuto...e=page_4#LVI-K
C'est un article bien écrit, et vraiment de référence, qui contient une petite imprécision que voici :
dans le Visiteur, on devrait avoir une seule méthode, mais avec des signatures différentes :
1 2 3 4 5 6 7
| public interface Visiteur {
public void visiterElement(ConcreteElementA pElementA);
public void visiterElement(ConcreteElementB pElementB);
//visite par défaut (si besoin)
//public void visiterElement(Element pElement);
} |
Ensuite, un ElementAbstrait appelle cette methode générique:
1 2 3 4 5
| public abstract class ElementAbstrait extends Element{
public void recevoirVisiteur(Visiteur pVisiteur) {
pVisiteur.visiterElement(this);
}
} |
et les elements concrets n'implémentent plus Element, mais étendent ElementAbstrait
1 2
| public class ConcreteElementA extends ElementAbstrait ...
public class ConcreteElementB extends ElementAbstrait ... |
Ce qui permet de factoriser le code, et d'être moins intrusif sur les elements concrets (aucun changement dans les elements hors l'ajout du extends)
Partager