Injektion von Abhängigkeiten ist eine Art der Umsetzung des " Umkehrung der Kontrolle "Prinzip, auf dem das Frameworks Building basiert.
Rahmenwerke wie im "Design Pattern" der GoF angegeben, sind Klassen, die die Hauptkontrollflusslogik implementieren, was den Entwickler dazu veranlasst, dies zu tun, auf diese Weise realisieren Frameworks das Prinzip der Kontrollumkehr.
Ein Weg, um als Technik zu implementieren, und nicht als Klassenhierarchie, dieses IoC-Prinzip ist es nur Dependency Injection.
DI besteht hauptsächlich darin, das Mapping von Klasseninstanzen und Typreferenzen auf diese Instanzen an eine externe "Entität" zu delegieren: ein Objekt, eine statische Klasse, eine Komponente, ein Framework, etc.
Die Instanzen der Klassen sind die " Abhängigkeiten ", die externe Bindung der aufrufenden Komponente mit der Klasseninstanz durch die Referenz ist es die " Einspritzung ".
Natürlich kann man diese Technik in vielerlei Hinsicht vom OOP-Standpunkt aus implementieren, siehe zum Beispiel Konstruktor-Injektion , Setzereinspritzung , Interface-Injektion .
Die Delegierung der Aufgabe, eine Referenz einem Objekt zuzuordnen, an einen Dritten ist sehr nützlich, wenn Sie eine Komponente, die einige Dienste benötigt, vollständig von der Implementierung derselben Dienste trennen möchten.
Auf diese Weise können Sie sich bei der Entwicklung von Komponenten ausschließlich auf ihre Architektur und ihre spezifische Logik konzentrieren und sich auf Schnittstellen für die Zusammenarbeit mit anderen Objekten verlassen, ohne sich Gedanken über Änderungen bei der Implementierung der verwendeten Objekte/Dienste machen zu müssen, auch wenn das gleiche Objekt, das Sie verwenden, vollständig ersetzt wird (natürlich unter Beachtung der Schnittstelle).
0 Stimmen
Siehe meine Diskussion über Dependency Injection Hier .
44 Stimmen
Ich stimme den Kommentaren zu den Links zu. Ich kann verstehen, dass Sie vielleicht auf jemand anderen verweisen wollen. Aber fügen Sie zumindest hinzu, warum Sie sie verlinken und was diesen Link besser macht als die anderen Links, die ich mit Google finden könnte
0 Stimmen
@AR: Technisch gesehen, ist Dependency Injection no eine besondere Form von IoC. Vielmehr ist IoC eine Technik, die zur Bereitstellung von Dependency Injection verwendet wird. Es können auch andere Techniken für die Dependency Injection verwendet werden (obwohl IoC die einzige ist, die häufig verwendet wird), und IoC wird auch für viele andere Probleme verwendet.
157 Stimmen
Was die Links betrifft, so ist zu bedenken, dass sie oft auf die eine oder andere Weise verschwinden. Die Zahl der toten Links in SO-Antworten steigt. Egal, wie gut der verlinkte Artikel ist, er nützt nichts, wenn man ihn nicht finden kann.
0 Stimmen
Vojta Jina über Dependency Injection youtu.be/_OGGsf1ZXMs . Der erste Teil.
0 Stimmen
Ein Überblick über Dependency Injection und ihre Beziehung zu anderen OOP-Prinzipien: deviq.com/dependency-injection
0 Stimmen
Hier ist ein Anwendungsbeispiel ohne DI: tugay.biz/2017/05/standalone-jpa-beispiel-mit-hibernate.html und dasselbe mit DI: tugay.biz/2017/05/add-c3p0-to-previous-example.html