empros gmbh - process & information management services
1009-chatExperience is the hardest kind of teacher.
It gives you the test first and the lesson afterward.

-Susan Ruth

Schnittstellen versus Klassen

Heuristik

Entwerfe auf eine Schnittstelle hin und nicht auf eine Klasse.

Erklärung

Die korrekte Verwendung von Vererbung basiert auf dem Liskovschen Substitutionsprinzip, das einfach formuliert wie folgt lautet:

Objekte der abgeleiteten Klasse können stets an die Stelle von Objekten der Oberklasse treten.

Hierzu existiert auch eine entsprechende Faustregel:

Vererbung sollte ausschliesslich zur Modellierung von Spezialisierungs-Hierarchien verwendet werden.

Damit erreichen wir, dass Klienten sich auf die Schnittstelle einer Basisklasse beziehen können, ohne die davon abgeleiteten Spezialisierungen kennen zu müssen. Daraus ergeben sich zwei Vorteile:

  • Klienten müssen nichts über die Typen der verwendeten Objekte wissen, solange diese Objekte die erwartete Schnittstelle erfüllen.
  • Klienten müssen nichts über die Klassen wissen, welche die Implementierung für die verwendeten Objekte liefern. Klienten wissen nur über die abstrakten Klassen Bescheid, welche die benötigte Schnittstelle deklarieren.

Damit reduzieren sich die Abhängigkeiten zwischen Subsystemen in eine so hohen Masse, dass sich daraus das eingangs erwähnte Prinzip ergibt. Es bildet einen wichtigen Grundpfeiler für den Entwurf von Systemen, die aus lose gekoppelten Objekten bestehen.

Lose gekoppelte Systeme sind wesentlich robuster, änderungsfreundlicher und einfacher zu testen als Systeme, die aus eng miteinander verzahnten Objekten bestehen.