Skip to content

Favour Composition over Inheritance (FCoI)

Miért?
A kompozíció segíti egy rendszer laza csatolását (loose coupling) és tesztelhetőségét és gyakran rugalmasabb.

A funkcionalitások újrafelhasználhatósága érdekében az objektumorientált programozás (OOP) két ismert jelöltet nevez meg: A származtatást (whitebox – reuse) és a kompozíciót (blackbox – reuse). Amennyiben az ember egy osztály leszármaztatásával hasznosít funkcionalitásokat újra, akkor a leszármazott osztály függővé válik a szülőosztálytól. Ez egy rendszert sok esetben szükségtelenül komplexé, rosszabbul tesztelhetővé tesz, és megnehezíti a funkcionalitás kicserélését a futásidőben. A Clean Code fejlesztőnek a helyes származtatáshoz tehát a Liskov Substitution Prinziple (LSP) áll rendelkezésére, amelyet ilyenkor követni ildomos.

A kompozíciónál egy osztály egy másikat használ. Amennyiben ehhez egy világosan meghatározott interfészt használunk, akkor ez elősegíti a csatolások szétválasztását. A különböző implementációkat is könnyen lehet kicserélni. Tehát mielőtt az ember a Liskov Substitution-ba belekezd, a Favour Composition over Inheritance megköveteli, hogy feltegyük a kérdést, nem jobb-e a kompozíciót előnyben részesíteni.

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)

Published inElvek