DIP (dependency inversion principle)

Das Dependency Inversion Principle (DIP) besagt, dass in der objektorientierten Programmierung die Basis eines Entwurfs nicht die speziellen Eigenschaften von Modulen sind, sondern deren gemeinsame Merkmale sollen in einer gemeinsamen Schnittstelle abstrahiert werden. Durch die Abstraktion werden die nicht mehr relevanten Details eines Moduls ausgeblendet. Mit Modul werden abgegrenzte und eigenständige Teile einer Software bezeichnet - dabei kann es sich um Objekte oder Klassen handeln. Die Umkehr der Abhängigkeiten ist nicht zu verwechseln mit dem in objektorientierten Programmierung gleichermaßen bekannten Prinzip von der Umkehr des Kontrollflusses, der Inversion of Control (IoC).


Eine wesentliche Eigenschaft der objektorientierten Programmierung ist es, Module mit abgegrenzten Verantwortlichkeiten zu definieren. Das Prinzip der Umkehr der Abhängigkeiten geht davon aus, dass es bei einem auf Modulen basierenden Entwurf keine unnötigen Abhängigkeiten dadurch geschaffen werden sollen, dass diese Module wiederum andere verwenden. Der alternative Ansatz basiert auf der Anwendung von Abstraktionen, wobei nur die Details betrachtet werden, die entscheidend für eine bestimmte Betrachtungsweise sind. Durch eine Abstraktion werden verallgemeinerte Charakteristika zusammengefasst und bilden die Grundlage für das Dependency Inversion Principle. Dabei werden jedoch nicht in dem Sinne konkret Abhängigkeiten umgekehrt, sondern der Begriff der Abhängigkeit bezieht sich auf die Abstraktion, von der wiederum dann die Module abhängig sind. In einer Programmiersprache umgesetzt werden Abstraktionen letztendlich durch Schnittstellen, die gemeinsamen Merkmale der Module beschreiben. Die Module selbst werden wiederum in Hierarchien angeordnet, so dass die unterste Ebene jeweils die Module definiert, die spezielle Verantwortlichkeiten haben. Die Module einer höheren Ebene definieren damit jeweils die Schnittstellen für die darunter liegende Ebene.

Mit Dependency Inversion Principle (DIP) ist eine Abkehr vom klassischen Top-Down-Entwurf vollzogen worden, bei dem für jede konkrete Ausprägung neue Module hinzugefügt wurden. Vielmehr werden bei DIP die gemeinsamen Eigenschaften abstrahiert, um so letztendlich die mindestens notwendigen Merkmale eines Moduls zu extrahieren.

Informationen zum Artikel
Deutsch: Umkehr der Abhängigkeit
Englisch: dependency inversion principle - DIP
Veröffentlicht: 16.03.2010
Wörter: 309
Tags: #Entwicklung, Codierung
Links: Abstraktion, DIP (dual inline package), Hierarchie, IoC (inversion of control), Klasse