Keine Klasse sollte Methoden implementieren müssen oder von Methoden abhängen, die sie nicht nutzt. Daraus folgt unmittelbar, dass Schnittstellen abstrakter Klassen minimal sein sollten. Laut Single-Responsibility-Prinzip sollte eine Klasse nur einem Akteur gegenüber verantwortlich sein, entsprechend unterschiedliche Verantwortlichkeiten auf unterschiedliche Klassen aufgeteilt werden. Trotzdem gibt es mitunter Situationen, in denen eine Klasse unterschiedliche Schnittstellen für unterschiedliche Akteure bereitstellen muss, z.B. weil alle Akteure auf eine gemeinsame Datenbasis zugreifen, wenn auch auf unterschiedliche Weise. Das ist eine Situation, in der das Interface-Segregation-Prinzip (ISP) zum Tragen kommt.
Ein wesentlicher Aspekt des ISP ist der Wechsel der Perspektive: Normalerweise wird die Abhängigkeit des Nutzers von einer Schnittstelle betrachtet: Eine Änderung der Schnittstelle erzwingt eine Änderung seines Nutzers. Umgekehrt können aber auch Nutzer Änderungen an einer Schnittstelle erzwingen. Besitzt eine Klasse mehrere Schnittstellen für unterschiedliche Nutzer, dann führt das zu einer Kopplung an sich getrennter Akteure. Genau hier greift das ISP mit seiner Idee, Schnittstellen aufzutrennen und für einen Akteur jeweils nur eine minimale, absolut notwendige Schnittstelle bereitzustellen, die zudem von allen anderen Schnittstellen abgeschottet (gekapselt) ist. Diese Entkopplung macht den Code übersichtlicher und sorgt für Flexibilität, Wiederverwendbarkeit, Wartbarkeit.
Diese Fragen dienen der persönlichen Beschäftigung mit der Thematik, es werden aber keine Antworten zur Verfügung gestellt.
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, 2003Martin, Robert C. (2003): Agile Software Development. Principles, Patterns, and Practices, Prentice Hall, Upper Saddle River, New Jersey] und Kapitel 10 in [Martin, 2018Martin, Robert C. (2018): Clean Architecture. A Craftman's Guide to Software Structure and Design, Prentice Hall, Boston]. 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, 1995Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1995): Design Patterns. Elements of Reusable Object-Oriented Software, Addison-Wesley, Boston] wieder.