Wenn man der Oberklasse eine Handvoll (ggf. abstrakter) Methoden spendiert, könnte man sich außer bei der Filterung doch die ganzen "is"-Abfragen sparen.
Delphi-Quellcode:
type
TOberdings = class
public
procedure SetValues; virtual; abstract;
procedure DisplayValues; virtual; abstract;
end;
TErstesUnterdings = class(TOberdings)
public
procedure SetValues; override;
procedure DisplayValues; override;
end;
TZweitesUnterdings = class(TOberdings)
public
procedure SetValues; override;
procedure DisplayValues; override;
end;
Wenn man nun eine Liste von TOberdings hat, kann man die Methoden SetValues und DisplayValues für jedes einzelne Element aufrufen, ohne sich um dessen konkreten Unterklassentyp scheren zu müssen. Weiterhin wäre auch der Ansatz über Interfaces denkbar, das ist dann noch einen Tacken abstrakter, da man noch nicht einmal eine bestimmte Klassenhierarchie einhalten müsste.