Visitor-Pattern



  • So ich verstehe hier mal wieder nichts:

    Aufgabe soll werden einen Szenengraphen zu implementieren als letztes haben wir angesprochen dass das Visitor Pattern sehr gut geeignet wäre um zu verhindern dass man immer neue Klassen von Lnoten schreiben muss
    (gemeint sind beispielsweise Transformationsknoten und Geometrieknoten)

    Leider verstehe ich das nicht,kann mir einer das Pattern erklären und sagen wo bei einem Szenengraphen Ansatzstellen dafür wären?
    Und welche Alternativen gibt es?



  • naja eine gute erklärung des pattern reciht mir eig auch , zB ein sinnvolles Beispiel,

    plzz



  • Hast du dir mal den Artikel in der Wikipedia angeguckt (http://de.wikipedia.org/wiki/Visitor)?

    shisha schrieb:

    Leider verstehe ich das nicht,kann mir einer das Pattern erklären und sagen wo bei einem Szenengraphen Ansatzstellen dafür wären?
    Und welche Alternativen gibt es?

    Beim Visitor Pattern geht es soweit ich gesehen habe immer nur um Operationen auf den Knoten. Eine Anwendng wäre z.B. das Berechnen der absoluten Transformation eines Blattes/Geometrieknotens. Dem Visitor wird einfach nach und nach jeder Knoten übergeben, und wenn es ein Transformationsknoten ist wird die Transformation in die bisherige eingerechnet.

    Die Alternative wäre das jeder Knoten eine Funktion bekommt um seine Transformation in eine gegebene einzurechnen. Das heißt aber das jeder Knotentyp diese Funktion haben muss. Ist es kein Transformationsknoten wird halt gar nichts gemacht.

    Der Unterschied macht sich vor allem bemerktbar wenn man später neue Operationen hinzufügt. Man kann einen neuen Visitor schreiben, oder man fügt jedem Knotentyp die Operation hinzu. Je mehr Knotentypen man hat, umso aufwändiger wird das natürlich.



  • Hmm

    aber wenn ich meine Knoten von einer virtuellen Klasse die rein gar nichts macht ableite und dann mit typeid zur laufzeit nachschaue was für ein knoten das ist und dann eben zB transformationen durchführen lasse.

    class Node
    class TransformationNode : public Node

    Baum durchlaufen...

    if typeid ...
    - transform

    aber soweit waren wir eig schon ...
    wo liegt nun der vorteil des visitor patterns?


Anmelden zum Antworten