Die Hierarchie haben wir jetzt vom Motor bis zum Fuhrparkleiter.
Der Interface-Ansatz kennt m.E. keine Hierarchien: Beide (TFuhrparkLeiter, TMotor) existieren unabhängig voneinander, sogar im richtigen Leben
Der will vielleicht nicht wissen wie der Motor im Wagen xy Brumm! macht, aber schon ob er Diesel oder Super will. Das muss er nämlich für seine Einsatzplanung bestellen. Das muss ich dem TFuhrparkleiter dann wieder über DI hintenrum mitteilen, oder wie?
DI hat nur etwas mit Abhängigkeiten (Dependencies) zu tun. Damit also TFuhrparkleiter erfahren kann, ob aMotor Diesel will, muss er keinen Bauplan ala aMotor := TMotor.Create() haben, sondern er fragt das Etikett(Interface) aMotor : IMotor. Dort sollte es drauf stehen, erzeugt/gebaut wird der Motor woanders.