RSS RSS

Clean Code Developer


Navigation





Search the wiki
»

PoweredBy

Favour Composition over Inheritance (FCoI)

RSS
Weitergeleitet von: FCoI
Warum?
Komposition fördert die lose Kopplung und die Testbarkeit eines Systems und ist oft flexibler.

EvolvierbarkeitKorrektheitProduktionseffizienzReflexion
+
Single Developer

Für die Wiederverwendung von Funktionalität kennt die Objektorientierte Programierung (OOP) zwei sehr bekannte Kandidaten: Die Vererbung (whitebox – reuse) und die Komposition (blackbox – reuse). Verwendet man Funktionalität wieder durch das Ableiten von einer Klasse, so ist die Subklasse abhängig von der Elternklasse. Dies macht ein System in vielen Fällen unnötig komplex, schlechter testbar und erschwert das Austauschen von Funktionalität zur Laufzeit. CCD hat für das korrekte Ableiten das Liskov Substitution Prinzip (LSP) bereit, das es dabei zu befolgen gilt.

Bei der Komposition verwendet eine Klasse eine andere. Verwendet man dazu eine klar definierte Schnittstelle, fördert das die Entkopplung. Auch können verschiedene Implementationen einfach ausgetauscht werden. Bevor man sich also der Liskov Substitution stellt, fordert Favour Composition over Inheritance, sich die Frage zu stellen, ob man der Komposition nicht Vorrang geben kann.

"Because inheritance exposes a subclass to details of its parent's implementation, it's often said that 'inheritance breaks encapsulation'". (Gang of Four 1995:19)

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