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 NodeBaum durchlaufen...
if typeid ...
- transformaber soweit waren wir eig schon ...
wo liegt nun der vorteil des visitor patterns?