Ich sehe aktuell keinen Grund, das Ganze generisch zu machen.
Man könnte natürlich auch sowas machen, um bei vielen Datentypen ein paar Zeilen zu sparen, aber ist nur nice-to-have:
Delphi-Quellcode:
TGenericNode<T> = class(TNode)
strict private
FValue: T;
public
constructor Create(Value: T);
property Value: T read FValue;
end;
TNodeA = class(TGenericNode<Integer>)
public
procedure Accept(Visitor: TVisitor); override;
end;
TNodeB = class(TGenericNode<Double>)
public
procedure Accept(Visitor: TVisitor); override;
end;