Google Guice: Framework fĂĽr Dependency Injection

Seite 8: Lose Beziehung

Inhaltsverzeichnis

Dependency Injection (DI) ist ein populäres Konzept in der Softwareentwicklung. Zwei der primären Ziele: Wiederverwendbarkeit und Wartung von Software durch lose Kopplung von Komponenten zu vereinfachen sowie das Testen zu erleichtern.

Wenn ein Objekt A eine Referenz auf ein Objekt B hält, kennt es in der Regel dessen Implementierung. Das DI-Konzept sieht vor, dass die Abhängigkeiten zwischen dem Aufrufer A und von ihm angesprochenen Zielen B nicht mehr in A hinterlegt werden. Welche Realisierung des Zielobjekts B konkret anzusprechen ist, wird dem Aufrufer erst bei Bedarf mitgeteilt. Die Beziehung zu dem konkreten B wird dazu in A "injiziert". Als Aufrufer kennt A also das zu verwendende Zielobjekt bis zur endgültigen Injektion nicht.

DI ist eine Anwendung des Paradigmas Inversion of Control (IoC), auch Hollywood Principle genannt: Don’t call us, we’ll call you. Auf diese Weise erlaubt es Dependency Injection, verschiedene Nutzungsszenarien zu verwenden, ohne den Quellcode des Aufrufers dafür anpassen zu müssen, etwa wenn neue Realisierungen der Zielobjekte hinzukommen. Gängiges Beispiel für ein solches weiteres Ziel ist ein Service als vereinfachte Variante des ursprüngliches Dienstes für Testzwecke. Wenn der eigentliche Dienst viele Ressourcen braucht und lange läuft oder überhaupt nur in der Produktivumgebung zur Verfügung steht, erlaubt die Ausprägung als Mock-Objekt (Dummy) ein (schnelleres) Testen.