Inhaltsverzeichnis
26. Interface-Segregation-Prinzip
- Themen
- Das Interface-Segregation-Prinzip
- Beispiele für seinen Einsatz
- Bedeutung im Gesamtkontext der Software-Architektur
- Folien
- Glossar
- Video
- MP4
Webcast
Hinweis: Der Webcast wurde mit Tiny Webcasts for Lecture(r)s erstellt.
Zentrale Aspekte
- Keine Klasse sollte Methoden implementieren müssen
oder von Methoden abhängen, die sie nicht nutzt. - Schnittstelle und Nutzer können beide
Veränderungen der jeweils anderen Seite erzwingen. - Klassen können mehrere Schnittstellen
für unterschiedliche Nutzer erfordern. - Benötigt eine Klasse mehrere Schnittstellen,
werden sie als separate, abstrakte Klassen definiert. - Die Entkopplung macht den Code übersichtlicher und
sorgt für Flexibilität, Wiederverwendbarkeit, Wartbarkeit.
Fragen zur Vertiefung und Wiederholung
Diese Fragen dienen der persönlichen Beschäftigung mit der Thematik, werden aber nicht separat in der Vorlesung besprochen.
- Welcher konstituierende Aspekt objektorientierter Programmierung ist wesentlich für das ISP?
- Welchen Perspektivwechsel nimmt das ISP hinsichtlich Abhängigkeiten vor?
- Welches Kernproblem wird durch den Einsatz des ISP gelöst?
- Welche Entsprechung für das ISP gibt es auf abstrakterer architektonischer Ebene? Wie lassen sich beide Prinzipien griffig zusammenfassen?
- Welche Bedeutung kommt dem ISP hinsichtlich der Testbarkeit einer Anwendung zu?
Weiterführende Literatur
Eine kommentierte und handverlesene Liste mit weiterführender Literatur zum Thema. Die Auswahl ist zwangsläufig subjektiv.
Wie alle anderen SOLID-Prinzipien wurde das ISP von Robert C. Martin prägnant formuliert. Vergleiche dazu Kapitel 12 in {[martin-rc-2003]} und Kapitel 10 in {[martin-rc-2018]}. Das Pendant auf höherer architektonischer Ebene, das Common-Reuse-Prinzip, wird von Robert C. Martin ebenda in späteren Kapiteln formuliert.
Die dem ISP zugrunde liegenden Entwurfsmuster, insbesondere „Interface“ und „Adapter“, finden sich im Buch der „Gang of Four“ {[gamma-e-1995]} wieder.
<bibtex bibliography> sort=true </bibtex>
