Dependency-Inversion Principle
Heuristik
Abstraktionen sollten nicht von Details abhängen. Details sollten von Abstraktionen abhängen.
Erklärung
Das von Robert C. Martin formulierte Dependency Inversion Principle (DIP) besagt:
a) Höher angesiedelte Module sollten nicht von tiefer liegenden Modulen abhängig sein. Beide sollten von Abstraktionen abhängen.
b) Abstraktionen sollten nicht von Details abhängen. Details sollten auf Abstraktionen beruhen.
Traditionelle prozedurale Programmierung erzeugt Abhängigkeitsstrukturen, in denen die allgemeinen Rahmenverträge (Policies) auf Details beruhen. Das ist problematisch, da diese Programme anfällig für Änderungen an den Details sind. Guter objekt-orientierter Entwurf kehrt diese Abhängigkeits-Strukturen um, so dass sowohl die Details als auch die allgemeinen Rahmenverträge auf Abstraktionen beruhen, wobei Service-Schnittstellen häufig im Besitz der Clients sind.
Das DIP ist grundlegend für guten objekt-orientierten Entwurf und die Basis für robuste Frameworks.
Lesen Sie hierzu auch