it-swarm.com.de

Unterschied zwischen Inversion der Kontrolle und Abhängigkeitsinjektion

IoC und DI-Konzept waren für mich sehr verwirrend, also lese ich viele Ansichten und Beiträge verschiedener Menschen und komme schließlich zum Schluss. So wie ich diese Themen verstehe, sind ...

Inversion of Control ist eine Technik in Java, mit der sich locker gekoppelte und leichter zu wartende Anwendungen erstellen lassen, und Abhängigkeitsinjektion ist eine Möglichkeit, dieses Konzept (Technik) zu erreichen.

Inversion der Kontrollcontainer zur Laufzeit von Java-Klassen abhängig, um eine lose gekoppelte Anwendung zu erstellen.

Ist das wahr ? korrigiere mich, wenn ich falsch liege ...

20
Devendra Anchal

IoC ist ein allgemeiner Begriff, der bedeutet, dass die Anwendung die Methoden nicht in einem Framework aufruft. Das Framework ruft Implementierungen auf, die von der Anwendung bereitgestellt werden.

DI ist eine Form von IoC, bei der Implementierungen durch Konstrukteure/Setter/Dienst-Lookups an ein Objekt übergeben werden, von denen das Objekt abhängig ist, um sich korrekt zu verhalten.

Referenz: Inversion der Kontrolle gegen Abhängigkeitsinjektion

17
NG.

Dies sind Muster, um eine lose Kopplung in der Java-Programmierung zu erreichen

DI (Abhängigkeitsinjektion):
Abhängigkeitsinjektion ist ein Muster, das zum Erstellen von Instanzen von Objekten verwendet wird, auf die sich andere Objekte zum Zeitpunkt der Kompilierung verlassen, ohne zu wissen, welche Klasse verwendet wird, um diese Funktionalität bereitzustellen, oder einfach die Art und Weise, wie Eigenschaften in ein Objekt eingefügt werden Abhängigkeitsinjektion genannt.

Wir haben drei Arten von Abhängigkeitseinspritzung

  1. Konstruktorinjektion 
  2. Setter/Getter-Injektion 
  3. Schnittstelleninjektion

Spring unterstützt nur Constructor Injection und Setter/Getter Injection. 

IOC (Inversion der Kontrolle):
Wenn Sie dem Container die Kontrolle über das Erstellen und Einfügen von Instanzen von Objekten geben, von denen Ihre Anwendung abhängig ist, bedeutet dies, anstatt ein Objekt mit dem Operator new zu erstellen. Lassen Sie den Container das für Sie erledigen. Die Umkehrung der Kontrolle hängt davon ab Abhängigkeitsinjektion, da ein Mechanismus benötigt wird, um die Komponenten zu aktivieren, die die spezifische Funktionalität bereitstellen

Die beiden Konzepte arbeiten auf diese Weise zusammen, damit flexibler, wiederverwendbarer und gekapselter Code geschrieben werden kann. Sie sind daher wichtige Konzepte für die Gestaltung objektorientierter Lösungen.

Beispiel für Abhängigkeitsinjektion

Zuvor schreiben wir Code so

Public MyClass{
 DependentClass dependentObject
 /*
  At somewhere in our code we need to instantiate 
  the object with new operator  inorder to use it or perform some method.
  */ 
  dependentObject= new DependentClass();
  dependentObject.someMethod();
}

Mit der Abhängigkeitseinspritzung nimmt der Abhängigkeitsinjektor die Instantiierung für uns ab 

Public MyClass{
 /* Dependency injector will instantiate object*/
 DependentClass dependentObject

 /*
  At somewhere in our code we perform some method. 
  The process of  instantiation will be handled by the dependency injector
 */ 

  dependentObject.someMethod();
}

Der obige Vorgang der Übergabe der Kontrolle an andere (zum Beispiel den Container) für die Instantiierung und Injektion kann als Inversion of Control bezeichnet werden.

Weitere Informationen zu Abhängigkeitsinjektion und IOC finden Sie in meiner Antwort: - Hier finden Sie Vorteile und Anwendungen der Konzepte.

Was ist Abhängigkeitsinjektion?

11
Samuel J Mathew

Inversion der Kontrolle bedeutet, dass das Programm die Kontrolle an eine andere Person delegiert, die den Fluss steuert IOC (Inversion der Kontrolle) ist ein allgemeiner übergeordneter Begriff, während DI (Dependency Injection) eine Untermenge von IOC ist. IOC ist ein Konzept, bei dem der Anwendungsfluss umgekehrt wird. Die Kontrolle der Logik, die nicht Teil dieser Entität ist, wird von einer anderen Person übernommen. DI stellt Objekte bereit, die ein Objekt benötigt. Anstatt die Abhängigkeiten selbst zu konstruieren, werden sie injiziert. Der größte Vorteil, der durch den oben genannten Ansatz erzielt wird, ist „Entkopplung“. Wir können ein Objekt aufrufen und jedes Objekt passieren lassen, sodass Objekte unabhängig bleiben, wodurch die Wiederverwendbarkeit und die Wartung verbessert werden.

1
Nico

IOC steht für "Inversion of Control". Es funktioniert nach dem Prinzip IOC, es bedeutet das Zusammenwirken der Objekte und das Verwalten der Objekte des Lebenszyklus. Zusammenarbeiten bedeutet, dass die Objekte an einem Ort zusammengefasst sind. Wir können die Objekte zusammenarbeiten. Es gibt zwei Möglichkeiten, dies sind Abhängigkeits-Pull und Abhängigkeitseinspritzung. DP ist auf zwei Arten (Abhängigkeitszug und Kontextabhängiger Abhängigkeitszug) und DI in zwei Wege (Setter Injection und Constructor Injection) unterteilt Wenn wir Abhängigkeits-Pull verwenden, wird unsere Komponentenklasse eng mit einer anderen Klasse gekoppelt, auch wenn dies im Rahmen der Federrahmenarbeit geschieht. Es gibt keinen Unterschied zwischen IOC und DI.IOC ist unterschiedlich und DI ist unterschiedlich, DI ist einer der Bestandteile von IOC.

0
user8293791

Inversion von Kontrolle und Abhängigkeit Injection ist ein Kerndesignmuster von Spring Framework. IOC und DI-Entwurfsmuster ist auch eine beliebte Interviewmusterfrage in Java. Wie der Name vermuten lässt, Umkehrung des Kontrollmusters Umkehrt die Verantwortung für die Verwaltung des Lebenszyklus des Objekts, z. Erstellen eines Objekts, Einstellen seiner Abhängigkeit usw. von der Anwendung in ein Framework, wodurch das Schreiben der Java-Anwendung noch einfacher wird. 

Weiterlesen: http://javarevisited.blogspot.com/2012/12/inversion-of-control-dependency-injection-design-pattern-spring-example-tutorial.html#ixzz4xve86pPN

0

Inversion of Control (IoC) bezieht sich auf einen Programmierstil, bei dem ein Framework oder eine Laufzeitumgebung den Programmfluss steuert. Umkehrung der Kontrolle bedeutet, dass wir die Kontrolle vom normalen Weg ändern. Es funktioniert nach dem Prinzip der Abhängigkeitsinversion.

DI ist ein Software-Entwurfsmuster, mit dem wir locker gekoppelten Code entwickeln können. DI ist eine großartige Möglichkeit, die enge Kopplung zwischen Softwarekomponenten zu reduzieren. Mit DI können wir auch zukünftige Änderungen und andere Komplexitäten in unserer Software besser steuern. Der Zweck von DI besteht darin, Code wartungsfähig zu machen.

0
Adi Sembiring