Bonjour à tous,

Je possède une structure Composite. Malheureusement dans la classe contenant ainsi que dans la classe Feuille, je crée des nouvelles méthodes pour chaque nouveau besoin.

Le problème est que les classes deviennent grosses et difficilement lisibles. Je me suis donc orienté vers le pattern Visiteur + Composite. Je souhaite donc isoler tous les algorithmes dans des classes de services Visiteur qui viendront se greffer au composite.

Je bloque actuellement sur un point commun à plusieurs fonctions. Je possède une fonction à l'intérieur du Composite toXML(); Je veux donc créer une classe de visite XMLExportVisitor pour enlever le toXML() des classes Composite. Le problème est que je n'arrive plus à gérer les inclusions des éléments comme avant. Je perd en quelque sorte l'arborescence de la structure.
avant je générais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<baliseMere>
    <baliseFille>
    </BaliseFille>
</baliseMere>
Maintenant et après le accept() et visit() j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<baliseMere>
</baliseMere>
<baliseFille>
</BaliseFille>
Je pense que j'ai du mal avec la notion de récursion dans le visiteur. Auriez-vous une piste ? merci d'avance à tous