RSS RSS

Clean Code Developer


Navigation





Search the wiki
»

PoweredBy

Interface Segregation Principle (ISP)

RSS
Warum?
Leistungsbeschreibungen, die unabhängig von einer konkreten Erfüllung sind, machen unabhängig.

EvolvierbarkeitKorrektheitProduktionseffizienzReflexion
+++
Single Developer

Das Interface Segregation Principle (ISP) ist ein weiteres SOLID Prinzip. Segregation bedeutet Abtrennung. Das Prinzip besagt, dass ein Client nicht von Details eines Service abhängig sein soll, die er gar nicht benötigt. Je weniger in dessen Interface enthalten ist, desto geringer ist die Kopplung zwischen den beiden Komponenten.

Stellen wir uns vor, wir müssten einen Stecker planen, mit dem ein Monitor an einen Computer angeschlossen werden soll. Wir entscheiden uns, einfach alle Signale die in einem Computer so anfallen, per Stecker zur Verfügung zu stellen. Der hat dann zwar einige Hundert Pins, aber dafür ist er maximal flexibel. Dummerweise ist damit die Kopplung ebenfalls maximal.

Beim Beispiel des Steckers ist es offensichtlich, dass eine Monitorverbindung nur jene Signale enthalten soll, die zur Darstellung eines Bildes auf dem Monitor erforderlich sind. Genauso verhält es sich mit Software Interfaces. Auch sie sollten so klein wie möglich sein, um unnötige Kopplung zu vermeiden. Und genau wie beim Monitorstecker sollte das Interface eine hohe Kohäsion haben: Es sollte nur Dinge enthalten, die wirklich eng zusammen gehören.

Um das Interface Segregation Principle anzuwenden, stehen die beiden Refaktorisierungen Extract Interface und Extract Superclass zur Verfügung.

Quellen

QuelleAutorKurzbeschreibung
http://www.objectmentor.com/resources/articles/isp.pdfRobert C. MartinArtikel zum Interface Segregation Principle von 1996, veröffentlicht im Engineering Notebook für The C++ Report

ScrewTurn Wiki version 3.0.3.555. Some of the icons created by FamFamFam.