Created: 05 Feb 2026 Last updated: 12 Sep 2026

Dependency Inversion Principle (DIP)

Siehe: SOLID, Programmierung

Module höherer Abstraktionsebene sollten nicht von Modulen niedrigerer Abstraktionsebene abhängen – beide sollten stattdessen von Abstraktionen (z.B. Interfaces) abhängen. Zusätzlich: Abstraktionen sollten nicht von Details abhängen, sondern Details von Abstraktionen.

“Höhere Ebene” meint hier fachliche/orchestrierende Logik (z.B. Bestellservice), “niedrigere Ebene” meint konkrete technische Implementierungen (z.B. MySQLDatenbank, SMTPMailversand). Ohne dieses Prinzip hängt fachlicher Code direkt an konkreten technischen Details – ein Wechsel der Technologie (z.B. andere Datenbank) erzwingt dann Änderungen an der fachlichen Logik selbst.

Beispiel: Bestellservice sollte nicht direkt MySQLDatenbank instanziieren, sondern von einem Interface Datenspeicher abhängen. MySQLDatenbank implementiert dieses Interface. Bestellservice kennt damit nur die Abstraktion – welche konkrete Implementierung tatsächlich verwendet wird, wird von außen übergeben (siehe Dependency Injection).

Wichtig: Dependency Inversion ≠ Dependency Injection – Injection ist eine gängige Technik, um Inversion praktisch umzusetzen (Abhängigkeiten werden von außen “injiziert” statt selbst erzeugt), aber nicht zwingend dasselbe Konzept.

Siehe auch: Inversion of Control


    • …