Hmmm, ich komm grad einfach nicht dahinter wie man sowas sauber macht.
Also folgendes:
In meiner Studienarbeit will ich Algorithmen visualisieren, dazu schreibe ich eine Art Compiler, also eher einen Interpreter der meine Quellsprache in einen Objektbaum umwandelt, den ich dann zur Ausführungszeit abarbeite.
Nun weiss ich aber nicht wie ich die Verbindung zur Darstellung hinbekomme. Ich habe da nun einen Baum, an dem ich irgendwo an der Wurzel einsteige und dann rekursiv durchgehe, möchte aber nicht den Code zur Visualisierung dort reinpacken sondern dass dies irgendwie woanders steht, aber wie mach ich das?
Ich denke momentan daran irgendwie ein Interface zu definieren, dass eine Art Listener darstellt… dann rufe ich bei jedem Knoten in meinem Baum eine Funktion auf, die den aktuellen Knoten an alle registrierten Listener übergibt und diese schauen dann ob sie was zu tun haben, z.b. eine Animation durchführen (bei einem Sortieralgorithmus zwei Zahlen austauschen oder sowas).
Ist das ein gebräuchlicher Weg oder was könnte man sonst machen? Was mir insbesondere nicht gefällt ist, dass ich z.b. in der Funktion evaluate() oder wie auch immer ich die nenne im Knoten ich dann jedesmal auch ein Listeners.handle(this) oder sowas in der Richtung einbauen müsste, einmal vergessen und alles is am A…
Ich hoffe das war so einigermassen verständlich was meine Fragestellung ist 
Ich muss also quasi in diesen Rekursionsablauf eingreifen um Informationen für andere Aufgaben (Visualisierung) abzurufen (so ne Art Abgreifen von Debug Information zur Laufzeit).
Gruß
Bruno