Delegation vor Vererbung

Vererbung ist ein tolles Mittel, um bereits modelliertes Verhalten vorhandener Klassen ohne Copy-Paste-Ansatz wiederzuverwenden. Jedoch eine Vererbung die nur dem Zweck dient, keinen Sourcecode zu duplizieren führt fast immer zu unsinnigen oder zumindest zweifelhaften Design und wird Implementierungsvererbung genannt. Die entstehende Klasse wiederspricht (in der Regel) dem Konzept des Subtyps. Gemeinsam verwendbare Funktionalität sollte besser in seperate Hilfsklassen ausgelagert werden und dann per Delegation statt Vererbung angesprochen werden.

Wird Vererbung nur eingesetzt, wenn tatsächlich die is-a Beziehung erfüllt ist, so profitiert man davon, dass beim Aufbau einer Klassenhierachie durch Ableitung lediglich die Unterschiede zum vererbten Verhalten und Zustand definiert werden müssen.

Delegation beschreibt, dass eine Aufgabe einem anderen Programmteil übergeben wird. In diesem Fall ist damit gemeint, das eine Klasse eine andere über eine Assoziation kennt und deren Methoden aufruft.

 

Quelle: “Auf dem Weg zum Java Profi” – Seite 50.

Siehe auch
http://clean-code-developer.de/Roter-Grad.ashx#Favour_Composition_over_Inheritance_FCoI_3

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>