Also danke für deine Mühen, aber 1. versteh ich nicht alles und 2. hat das denke ich nicht mehr viel mit Visitor zu tun.
Code:
procedure Visit(b : Base);
und eine Typunterscheidung in if else, switch case oder Zugriff über die gemeinsame Schnittstelle ist
keine Alternative. Dafür brauche ich keinen Visitor.
Da kann ich auch direkt
Delphi-Quellcode:
for base in Liste do
begin
if base is Dies : Tu dies
if base is Das : Tu das
...
end;
oder
Delphi-Quellcode:
for base in Liste do
begin
TuWasFuerAlleBaseGilt(base);
end;
Wenn es mit dem Visitor nicht geht, werde ich eher einen Weg wie in
#4 gehen. Ob der Visitor überhaupt das richtige Muster ist müsste ich eh noch entscheiden. Ich wollte nur vorher mal sehen, ob es sich überhautpt lohnt darüber nachzudenken, oder ob es in Delphi einfach quasi unmöglich ist.