Immer gegen Interfaces programmieren und "NIE" gegen Implementationen...
Dann einfach eine Factory die aus einem Interface das Object erzeugen kann und fertig...
So müssen alle Units nur gegen die Interface-Declarations-
Unit und gegen die Factory linken...
Das ist im Wesentlich auch nichts anderes als mein Vorschlag eines Prozedurtyps (Interface), Globale Prozedurvariable (Factory) und der implementierenden Prozedur (Objekt-Instanz). Nur daß in meinem Fall die Änderungen am Sourcecode nur minimal sind und trotzdem den gewünschten Effekt erzielen.
In meinem Vortrag "Altlast oder Erbschaft" auf den Delph-Tagen 2015 hatte ich diese Ansatz kurz angesprochen.