Ich betrachte mich selbst als erfahrener Programmierer und verstehe das Grundkonzept der Abhängigkeitsinjektion. Auf der anderen Seite, die meiste meiner Erfahrung ist schriftlich relativ Low-Level, Ein-Mann-Nummer-Crunching-Code. Ich habe keinerlei Erfahrung in großen Unternehmensprojekten.Dependency Injection Frameworks: Wie funktionieren sie?
Angesichts dieses Hintergrunds kann ich nicht für das Leben von mir meinen Kopf darum herum wickeln, warum irgendjemand einen Rahmen brauchen würde, um Abhängigkeitsinjektion zu machen. Kann mir jemand einen kurzen Überblick über die Funktionsweise eines solchen Frameworks geben, ohne auf viele Details einzugehen und zu erklären, wie es das Leben leichter macht, als nur das eigene zu rollen?
Edit: Ich habe hier einige gute Antworten bekommen. Habe ich Recht, wenn ich sage, dass ein DI-Framework im Grunde eine bequeme Möglichkeit bietet, global zugängliche Fabriken zu erstellen, die Abhängigkeiten erzeugen/zurückgeben, wann immer ein Objekt sie anfordert? Wenn ja, habe ich die ganze Zeit auf diese Art und Weise sehr ad hoc in meinem Code gearbeitet, aber ich habe nie daran gedacht, irgendein formelles/schweres Framework dafür zu verwenden.
Ich akzeptiere das, weil es meine Frage beantwortet. Ich habe jedoch ein wenig über Guice gesucht und gelesen und bin immer noch skeptisch, ob es wirklich einfacher oder weniger spröde ist, es zu konfigurieren, als nur ein paar Factory Functions/Klassen zu schreiben und/oder ein paar Konfigurationsflags in der entsprechenden Weise zu speichern Du versuchst es zu erreichen. – dsimcha
Ich sehe es als eine Verbesserung dieser Muster, da es auch die Abhängigkeit von den Fabrikklassen löst. Es ist auch weniger Codierung, mit einer einfachen Anmerkung erstellen Sie ganze Fabriken. Also weniger Bugs. – Kdeveloper
Je mehr ich darüber nachdenke, desto mehr denke ich, dass ein DI-Framework praktisch sein könnte. Es wäre etwas, das ich verwenden würde, wenn es in der Standard-Lib wäre, und würde das Leben marginal einfacher machen, aber nicht etwas, womit ich die Abhängigkeiten von Dritten stören würde. Meine Hauptsprache ist D, ich bin ein Entwickler für seine Standardbibliothek, und die Metaprogrammierungsmöglichkeiten von D sind ziemlich gut, also denke ich halbwegs daran, ein sehr einfaches, leichtgewichtiges (wie in einem Modul) DI-Framework zu schreiben D Standardbibliothek – dsimcha