Heim Java javaLernprogramm Was ist der Unterschied zwischen Inversion of Control und Dependency Injection?

Was ist der Unterschied zwischen Inversion of Control und Dependency Injection?

Apr 24, 2019 pm 02:44 PM
依赖注入 Umkehrung der Kontrolle

Die Unterschiede zwischen der Umkehrung der Kontrolle und der Abhängigkeitsinjektion sind: Die Abhängigkeitsinjektion wird aus der Perspektive der Anwendung beschrieben, während die Umkehrung der Kontrolle aus der Perspektive des Containers beschrieben wird, während sich die Umkehrung der Kontrolle auf Prinzipien konzentriert Die Injektion konzentriert sich auf die Umsetzung.

Was ist der Unterschied zwischen Inversion of Control und Dependency Injection?

[Empfohlener Kurs: Java-Tutorial]

Der Unterschied zwischen Kontrollumkehr und Abhängigkeitsinjektion

IOC-Kontrollumkehr Umkehrung der Kontrolle

DI-Abhängigkeitsinjektion Abhängigkeitsinjektion

Um diese beiden Konzepte zu verstehen, müssen wir zunächst folgende Fragen klären:

Wer sind die Teilnehmer?

Abhängigkeit: Wer ist von wem abhängig? Warum brauchen wir Abhängigkeiten?

Injektion: Wer spritzt in wen? Was genau wird gespritzt?

Kontrollumkehr: Wer kontrolliert wen? Was kontrollieren? Warum spricht man von einer Umkehrung (wenn es eine Umkehrung gibt, sollte es eine Vorwärtsumkehr geben)?

Sind Abhängigkeitsinjektion und Umkehrung der Kontrolle dasselbe Konzept?

Beantworten wir kurz die oben genannten Fragen. Sobald diese Fragen verstanden sind, wird auch IOC/DI verstanden.

(1) Wer sind die Teilnehmer:

Im Allgemeinen gibt es drei Parteien, eine ist ein bestimmtes Objekt; die andere ist ein IOC/DI-Container; externe Ressource für ein Objekt.

Ein Objekt bezieht sich auf jedes gewöhnliche Java-Objekt

IOC/DI-Container bezieht sich einfach auf ein Rahmenprogramm, das zur Implementierung von IOC/DI-Funktionen verwendet wird

Die externen Ressourcen des Objekts beziehen sich auf das, was das Objekt benötigt, aber sie werden von außerhalb des Objekts bezogen. Sie werden zusammenfassend als Ressourcen bezeichnet, z. B.: andere vom Objekt benötigte Objekte oder vom Objekt benötigte Dateiressourcen usw.

(2) Wer hängt von wem ab:

Natürlich hängt ein bestimmtes Objekt vom IOC/DI-Container ab

(3 ) Warum Abhängigkeiten benötigt werden:

Objekte benötigen IOC/DI-Container, um externe Ressourcen bereitzustellen, die von Objekten benötigt werden

(4) Wer injiziert in wen:

Offensichtlich injiziert der IOC/DI-Container ein Objekt

(5) Was genau injiziert wird:

Das ist es Injizieren Sie externe Ressourcen, die für ein Objekt erforderlich sind

(6) Wer kontrolliert wen:

Natürlich ist es der IOC/DI-Container, der das steuert Objekt

(7) Was zu kontrollieren ist:

Steuert hauptsächlich die Erstellung von Objektinstanzen

(8) Warum ist es heißt umgekehrt Umkehren:

Umkehrung ist relativ zur positiven Richtung, was zählt also als positiv? Denken Sie über die Anwendung unter normalen Umständen nach, wenn Sie C in A verwenden möchten. Natürlich wird das Objekt von C direkt erstellt, dh die erforderliche externe Ressource C wird aktiv in Klasse A abgerufen. Diese Situation wird als vorwärts bezeichnet. Was ist also umgekehrt? Das heißt, Klasse A erhält C nicht mehr aktiv, sondern wartet passiv darauf, dass der IOC/DI-Container eine Instanz von C erhält, und fügt sie dann umgekehrt in Klasse A ein.

Verwenden Sie zur Veranschaulichung zunächst das schematische Diagramm der herkömmlichen Klasse A mit Klasse C, wenn kein IOC/DI vorhanden ist, wie in der Abbildung gezeigt:

Was ist der Unterschied zwischen Inversion of Control und Dependency Injection?

Mit dem IOC/DI-Container erstellt Klasse A nicht mehr aktiv C, wie in der Abbildung gezeigt:

Was ist der Unterschied zwischen Inversion of Control und Dependency Injection?

sondern passiv Warten Warten Sie, bis der IOC/DI-Container eine Instanz von C erhält, und fügen Sie sie dann umgekehrt in Klasse A ein, wie in der Abbildung gezeigt:

Was ist der Unterschied zwischen Inversion of Control und Dependency Injection?

(9 ) Sind Abhängigkeitsinjektion und Umkehrung der Kontrolle dasselbe Konzept?

Anhand der obigen Beschreibung sollten Sie erkennen können, dass Abhängigkeitsinjektion und Umkehrung der Kontrolle unterschiedliche Beschreibungen derselben Sache sind. In einem bestimmten Aspekt werden sie aus unterschiedlichen Perspektiven beschrieben. Die Abhängigkeitsinjektion wird aus der Perspektive der Anwendung beschrieben. Die vollständige Beschreibung lautet: Die Anwendung ist auf den Container angewiesen, um die benötigten externen Ressourcen zu erstellen und zu injizieren. Der Container steuert die Anwendung. Der Container injiziert umgekehrt die von der Anwendung benötigten externen Ressourcen.

Zusammenfassung:

Tatsächlich ergibt sich die größte Veränderung, die IOC/DI für die Programmierung mit sich bringt, nicht aus dem Code, sondern aus der Perspektive des „Master-Slave“-Denkens „Transposition“ sind Änderungen eingetreten. Ursprünglich war die Anwendung der Chef und ergriff die Initiative, um alle Ressourcen zu erhalten. Im IOC/DI-Denken wird die Anwendung jedoch passiv und wartet passiv darauf, dass der IOC/DI-Container die benötigten Ressourcen erstellt und einspeist. Eine so kleine Änderung stellt tatsächlich einen großen Fortschritt im Programmierdenken dar, der das Objekt und die dafür erforderlichen externen Ressourcen effektiv trennt, sie lose gekoppelt macht, die funktionale Wiederverwendung begünstigt und, was noch wichtiger ist, die Struktur des gesamten Programmsystems sehr verbessert flexibel

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Inversion of Control und Dependency Injection?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Eine Schritt-für-Schritt-Anleitung zum Verständnis der Abhängigkeitsinjektion in Angular Eine Schritt-für-Schritt-Anleitung zum Verständnis der Abhängigkeitsinjektion in Angular Dec 02, 2022 pm 09:14 PM

Dieser Artikel führt Sie durch die Abhängigkeitsinjektion, stellt die durch die Abhängigkeitsinjektion gelösten Probleme und ihre native Schreibmethode vor und spricht über das Abhängigkeitsinjektions-Framework von Angular. Ich hoffe, es wird Ihnen hilfreich sein!

So verwenden Sie die Abhängigkeitsinjektion (Dependency Injection) im Phalcon-Framework So verwenden Sie die Abhängigkeitsinjektion (Dependency Injection) im Phalcon-Framework Jul 30, 2023 pm 09:03 PM

Einführung in die Methode zur Verwendung der Abhängigkeitsinjektion (DependencyInjection) im Phalcon-Framework: In der modernen Softwareentwicklung ist die Abhängigkeitsinjektion (DependencyInjection) ein gängiges Entwurfsmuster, das darauf abzielt, die Wartbarkeit und Testbarkeit des Codes zu verbessern. Als schnelles und kostengünstiges PHP-Framework unterstützt das Phalcon-Framework auch die Verwendung von Abhängigkeitsinjektion zur Verwaltung und Organisation von Anwendungsabhängigkeiten. In diesem Artikel erfahren Sie, wie Sie das Phalcon-Framework verwenden

Abhängigkeitsinjektion mithilfe des JUnit-Unit-Test-Frameworks Abhängigkeitsinjektion mithilfe des JUnit-Unit-Test-Frameworks Apr 19, 2024 am 08:42 AM

Zum Testen der Abhängigkeitsinjektion mit JUnit lautet die Zusammenfassung wie folgt: Verwenden Sie Scheinobjekte, um Abhängigkeiten zu erstellen: Die @Mock-Annotation kann Scheinobjekte von Abhängigkeiten erstellen. Testdaten festlegen: Die @Before-Methode wird vor jeder Testmethode ausgeführt und zum Festlegen von Testdaten verwendet. Scheinverhalten konfigurieren: Die Methode Mockito.when() konfiguriert das erwartete Verhalten des Scheinobjekts. Ergebnisse überprüfen: affirmEquals() prüft, ob die tatsächlichen Ergebnisse mit den erwarteten Werten übereinstimmen. Praktische Anwendung: Sie können ein Abhängigkeitsinjektions-Framework (z. B. Spring Framework) verwenden, um Abhängigkeiten zu injizieren und die Richtigkeit der Injektion und den normalen Betrieb des Codes durch JUnit-Einheitentests zu überprüfen.

Abhängigkeitsinjektionsmuster bei der Übergabe von Golang-Funktionsparametern Abhängigkeitsinjektionsmuster bei der Übergabe von Golang-Funktionsparametern Apr 14, 2024 am 10:15 AM

In Go wird der Abhängigkeitsinjektionsmodus (DI) durch die Übergabe von Funktionsparametern implementiert, einschließlich der Übergabe von Werten und Zeigern. Im DI-Muster werden Abhängigkeiten typischerweise als Zeiger übergeben, um die Entkopplung zu verbessern, Sperrenkonflikte zu reduzieren und die Testbarkeit zu unterstützen. Durch die Verwendung von Zeigern wird die Funktion von der konkreten Implementierung entkoppelt, da sie nur vom Schnittstellentyp abhängt. Durch die Zeigerübergabe wird auch der Overhead für die Übergabe großer Objekte reduziert, wodurch Sperrenkonflikte reduziert werden. Darüber hinaus erleichtert das DI-Muster das Schreiben von Komponententests für Funktionen mithilfe des DI-Musters, da Abhängigkeiten leicht simuliert werden können.

Vertiefendes Verständnis der Umkehrung der Kontrolle in der Go-Sprache Vertiefendes Verständnis der Umkehrung der Kontrolle in der Go-Sprache Apr 08, 2024 am 08:51 AM

Inversion of Control (IoC) ist ein Software-Entwurfsmuster, das Objektabhängigkeiten in fest codierte Kopplungen trennt. In Go kann IoC durch Schnittstellen und Abhängigkeitsinjektion (DI) erreicht werden: Schnittstelle: Definiert den Satz von Methoden, die Typen, die der Schnittstelle folgen, implementieren müssen. Abhängigkeitsinjektion: Durch externe Konfiguration oder Codegenerierung werden Objektabhängigkeiten festgelegt. Zu den Tipps gehören: Konstruktorinjektion: Angeben von Abhängigkeiten im Konstruktor. Feldinjektion: Verwenden Sie Reflektion oder Codegenerierung, um Abhängigkeiten in Felder einzufügen. Schnittstelleninjektion: Übergabe von Schnittstellentypen als Parameter an Funktionen oder Methoden.

Abhängigkeitsinjektion und Servicecontainer für PHP-Funktionen Abhängigkeitsinjektion und Servicecontainer für PHP-Funktionen Apr 27, 2024 pm 01:39 PM

Antwort: Abhängigkeitsinjektion und Servicecontainer in PHP helfen dabei, Abhängigkeiten flexibel zu verwalten und die Testbarkeit des Codes zu verbessern. Abhängigkeitsinjektion: Abhängigkeiten durch den Container leiten, um eine direkte Erstellung innerhalb der Funktion zu vermeiden und so die Flexibilität zu verbessern. Service-Container: Speichert Abhängigkeitsinstanzen für einen einfachen Zugriff im Programm, wodurch die lose Kopplung weiter verbessert wird. Praktischer Fall: Die Beispielanwendung demonstriert die praktische Anwendung von Abhängigkeitsinjektion und Servicecontainern, wobei Abhängigkeiten in den Controller eingefügt werden, was die Vorteile der losen Kopplung widerspiegelt.

Wie verwende ich die Abhängigkeitsinjektion für Unit-Tests in Golang? Wie verwende ich die Abhängigkeitsinjektion für Unit-Tests in Golang? Jun 02, 2024 pm 08:41 PM

Die Verwendung von Dependency Injection (DI) beim Golang-Unit-Testen kann den zu testenden Code isolieren und so die Testeinrichtung und -wartung vereinfachen. Zu den beliebten DI-Bibliotheken gehören Wire und Go-Inject, die Abhängigkeits-Stubs oder Mocks zum Testen generieren können. Zu den Schritten des DI-Tests gehören das Festlegen von Abhängigkeiten, das Einrichten von Testfällen und das Durchführen von Ergebnissen. Ein Beispiel für die Verwendung von DI zum Testen einer HTTP-Anforderungsverarbeitungsfunktion zeigt, wie einfach es ist, Code ohne tatsächliche Abhängigkeiten oder Kommunikation zu isolieren und zu testen.

Go Language: Leitfaden zur Abhängigkeitsinjektion Go Language: Leitfaden zur Abhängigkeitsinjektion Apr 07, 2024 pm 12:33 PM

Antwort: In der Go-Sprache kann die Abhängigkeitsinjektion über Schnittstellen und Strukturen implementiert werden. Definieren Sie eine Schnittstelle, die das Verhalten von Abhängigkeiten beschreibt. Erstellen Sie eine Struktur, die diese Schnittstelle implementiert. Fügen Sie Abhängigkeiten über Schnittstellen als Parameter in Funktionen ein. Ermöglicht das einfache Ersetzen von Abhängigkeiten in Tests oder anderen Szenarien.

See all articles