Class helpers hier zu nutzen ist ne interessante Idee. Gefällt mir. Aber es löst das Problem nicht. Zusätzlich ist immer noch eine is-Verzweigung oder das Visitor-Pattern nötig. Beispiel:
Delphi-Quellcode:
var
a, b: TThing;
begin
a := TAsteroid.Create;
b := TShip.Create;
a.CollideWith(b);
Hier wird
TThing.CollideWith( Thing : TThing );
aufgerufen. Und nicht
TAsteroidCollisionHelper.CollideWith( Thing : TShip );
Und das ist der springende Punkt...
mfg
Christian