Die Entkopplung ist ein sehr allgemeines Prinzip, das in vielen Bereichen anwendbar ist. Die Abhängigkeitsinversion ist eine spezielle Form der Entkopplung, bei der Sie die höheren Ebenen Ihres Systems von den niedrigeren Ebenen entkoppeln, indem Sie sie in Bibliotheken unterteilen und Schnittstellen verwenden. Auf diese Weise können Sie untergeordnete Teile Ihres Systems ohne größere Nacharbeiten ersetzen.
Anstelle der übergeordneten Teile des Systems, die konkrete Instanzen der untergeordneten Klassen erstellen, kann beispielsweise ein IoC-Container verwendet werden, um die Erstellung von Objekten zu entkoppeln.
Die Inversion der Steuerung ist ein Entwurfsprinzip, das von Framework-Bibliotheken verwendet wird, mit denen das Framework die Kontrolle über die Anwendung wiedererlangen kann. Das heißt, ein Fensterframework kann den Anwendungscode zurückrufen, wenn bestimmte Ereignisse der Benutzeroberfläche auftreten. Martin Fowler verwendet den Begriff Hollywood-Prinzip wie in Rufen Sie uns nicht an, wir rufen Sie an . Die Entkopplung ist ein wichtiger Bestandteil der Umkehrung der Kontrolle.
Aber was hat ein IoC-Container mit der Umkehrung der Kontrolle zu tun? Um Martin Fowler zu zitieren :
Inversion of Control ist ein zu allgemeiner Begriff, und daher finden ihn die Leute verwirrend. Als Ergebnis vieler Diskussionen mit verschiedenen IoC-Befürwortern haben wir uns für den Namen Dependency Injection entschieden.
(Beachten Sie, dass Martin Fowler von Abhängigkeitsinjektion und nicht von Abhängigkeitsinversion spricht .)
Ein IoC-Container hilft bei der Implementierung der Abhängigkeitsinjektion, und ein besserer Begriff wäre möglicherweise der Abhängigkeitsinjektionscontainer. Der Name des IoC-Containers scheint jedoch zu bleiben. Die Abhängigkeitsinjektion ist eine wichtige Komponente bei der Abhängigkeitsinversion, aber die Verwendung von IoC-Containern für die Abhängigkeitsinjektion kann verwirrend sein, da die Inversion der Steuerung ein umfassenderes und allgemeineres Prinzip ist.
Sie weisen darauf hin, dass die Benennung nicht sehr konsistent ist, aber das sollte keine große Überraschung sein, da diese Begriffe unabhängig erfunden und verwendet wurden, obwohl sie sich überschneiden.