Forum: Object-Pascal / Delphi-Language
by mael,
11. Mär 2020
Da hast du natürlich Recht. Ist halt die Version die ich üblicherweise kenne, bin aber gerne bereit was zu lernen.
Was ist denn der praktische Vorteil deiner Lösung, also was "So solltest die niemals t.Accept(Visitor) aufrufen, sondern immer Visitor.Visit(t)" angeht? Inwiefern entkoppelt es mehr da man sich ja in beiden Fällen auf eine abstrakte Klasse/Interface bezieht?
Schwer das mit...
Forum: Object-Pascal / Delphi-Language
by mael,
11. Mär 2020
Ich bin mir nicht sicher ob wir uns da missverstehen, aber folgendes C#-Beispiel tut es auch so:
https://en.wikipedia.org/wiki/Visitor_pattern#C.23_example
e.Accept(expressionPrinter);
Siehe auch die Methode "Visit(Addition addition)" die "addition.Left.Accept" aufruft.
In meinem Fall schon, da meine Anforderungen andere sind. Siehe unten.
Danke für das Codebeispiel.
Forum: Object-Pascal / Delphi-Language
by mael,
11. Mär 2020
Danke, kenne den Post, hilft aber leider nicht weiter.
Forum: Object-Pascal / Delphi-Language
by mael,
11. Mär 2020
Hallo,
Ich versuche ein etwas modifiziertes Visitor-Pattern mit Generics auszustatten.
Hier mal ein minimales Beispiel ohne Generics (bis auf TObjectList<TNode>, aber das ist hier nicht relevant):
type
TStringVisitor = class;