Home

Abhängigkeitsumkehr

Abhängigkeitsumkehr, auch Abhängigkeitsinversionsprinzip (DIP) genannt, ist ein Grundsatz der Softwarearchitektur. Er besagt, dass High-Level-Komponenten nicht von Low-Level-Komponenten abhängen sollten. Stattdessen sollen beide Schichten von Abstraktionen abhängen, und Details sollen sich nach diesen Abstraktionen richten. Das Prinzip ist Bestandteil der SOLID-Prinzipien und wurde von Robert C. Martin formuliert. Ziel ist eine lose Kopplung, die Systementwurf, Erweiterbarkeit, Testbarkeit und Wartbarkeit verbessert.

In der Praxis bedeutet dies, dass konkrete Implementierungen (z. B. Datenzugriff, Logging oder externe Dienste) über

Umsetzungstechniken umfassen Dependency Injection (Konstruktor-, Setter- oder Interface-Injection), Inversion-of-Control-Container und, in manchen Fällen, Service Locator. Durch

Beispiel (C#-ähnlich):

interface ILogger { void Log(string message); }

class ConsoleLogger : ILogger { public void Log(string message) { Console.WriteLine(message); } }

class Processor { private readonly ILogger logger; public Processor(ILogger logger) { this.logger = logger; } public void Execute() { logger.Log("Starting"); }

Vorteile umfassen erhöhte Austauschbarkeit von Implementierungen, einfache Testbarkeit durch Mocking und geringere Kopplung. Nachteile können zusätzliche

Abstraktionen
definiert
werden,
typischerweise
Schnittstellen
oder
abstrakte
Klassen.
Die
High-Level-Logik
referenziert
diese
Abstraktionen
statt
konkreter
Typen,
wodurch
Änderungen
an
den
Details
die
High-Level-Komponenten
weniger
betreffen.
Details
implementieren
die
Abstraktionen,
nicht
umgekehrt.
diese
Muster
werden
Abhängigkeiten
zur
Laufzeit
bereitgestellt,
statt
vom
Code
hardkodiert
zu
werden.
Dadurch
wird
die
Architektur
flexibler
und
leichter
testbar.
}
Komplexität
und
initialer
Konfigurationsaufwand
sein.