@Mavarik
Den Zahn hab ich Nick Hodges schon lange gezogen, der das ne Weile gepredigt hat - aus genau den oben genannten Gründen.
Das Verstecken von Klassen im Implementation Teil, damit sie ja keiner so nutzt, ist Unfug, wenn man sie dann über ein Interface von hintenrum verfügbar macht. Denn das ist der Tod für jegliche Testbarkeit der Klasse und dann fangen einige an, mit Compiler switches und weiß der Teufel das ganze für Unittests sichtbar zu machen. Außerdem ist das garantiert kein Design Pattern sondern eine Delphi Eigenheit.
Außerdem sollte man seinen Code so schreiben, dass er auch ohne einen DI Container durch manuelles Zusammenstecken funktionieren würde. Und das ist hier auch nicht der Fall.
@TiGü