Hi!
Meinst Du,
er sagt grundlegend das gleiche wie Du, unterscheidet sich aber in Details und Begrifflichkeiten oder
er sagt nicht grundlegend das gleiche wie Du, aber Details und Begrifflichkeiten ähneln sich.
Ich gehe davon aus Du meintest ersteres.
Ja.
Aber eine kurze Sache nochmal: Wie kann ich mir denn so ein DI-Framework vorstellen? Oder besser: Welche Vorteile bietet es mir? Ich stelle mir das immernoch so vor, dass ich auch in einem DI-Framework die Objekte von Hand erstellen muss - nur eben nur einmal innerhalb eines solchen Containers. Und anschließend kann ich aus dem gesamten Framework statt einer speziellen Klasse eben diesen Container aufrufen.
Deine Anwendung profitiert davon, dass sie nur einen sehr allgemeinen Wunsch äußern muss und nicht haarklein selbst alle für die Abhängigkeiten benötigten Werte zusammentragen und die Objekte in der richtigen Reihenfolge instantiieren muss. Wie auch bei der Verwendung einer stinknormalen Funktion profitiert man davon, wenn solche Aufrufe mehrfach stattfinden oder/und durch die Kapselung der Teilaufgabe zu einer besseren Überschaubarkeit beitragen.
Es ist wie immer, jede Vereinfachung erhöht die Komplexität. Sie verschwindet ja nicht, wie man annehmen könnte, sie wird nur verlagert. Und um an den neuen Lagerort zu kommen, braucht man einen Weg, der vorher noch nicht da war, also zusätzlich erschaffen werden muss. Auch bei mehrfacher Verwendung wird die generelle Komplexität nicht weniger, denn der Weg muss beschritten (= Funktionsaufruf und Rückkehr) und die verlagerte Funktionalität ausgeführt werden. Der Vorteil ist "lediglich" eine vereinfachte Notation der Ausführungsanweisung.
Und so ist es auch mit dem DI-Container. Als erstes schafft er Übersichtlichkeit bei der aufrufenden Stelle, dann ermöglicht er ein schnelleres Notieren bei weiteren Verwendungen. Aber wenn du mal einen Fehler hast, kann der nicht nur innerhalb des Containers sein, sondern zusätzlich auch noch beim Aufruf und der Werterückgabe liegen. Und beim Beseitigen musst du berücksichtigen, dass es noch eine Menge weiterer Verwender geben kann, die durch eine Änderung betroffen sein können.
Lo!