Skip to content

Liskov Substitution Principle

Miért?
Akinek örökösökkel van dolga, nem akar meglepetéseket, ha ismeri az öröklőt.

A Liskov Substitution Principle (LSP) is egy SOLID elv. Azt írja elő, hogy az altípusoknak úgy kell viselkedniük, mint a alaptípusnak. Ez először banálisan hangzik. A kivételek (exception) példáján érthetővé válik, milyen problémák lépnek fel, ha ezt az elvet megsértik. Amennyiben az alaptípus egy eljárásának végrehajtásakor nem vált ki kivételt (exception), akkor az összes altípusnak is tartania kell magát ehhez a szabályhoz. Amennyiben az egyik altípus eljárása mégis kivételt (exception) vált ki, akkor ez gondot okoz olyan helyeken ahol egy alaptípusú objektumot használunk, mert ott nem vagyunk felkészülve erre. Ha az alaptípus ezen a helyen nem vált ki kivételt, akkor a használó nincsen felkészülve arra, hogy kivételt kell kezelnie.Általánosabban úgy is ki lehetne fejezni ezt az elvet, hogy az altípusnak csak kibővítenie szabad az alaptípus funkcionalitását, de korlátoznia nem. Amennyiben egy eljárás az alaposztályban egy értéktartományban van meghatározva, akkor az altípusnak ezt az értéktartományt szabad átvennie vagy bővítenie, de semmiképpen sem szabad korlátoznia.

A Liskov Substitution Principle-ből továbbá az az ajánlás következik, hogy alaposan gondoljuk át az öröklődést. A lehető legtöbb esetben a kompozíciót a öröklődéssel szemben előnyben kell részesíteni (Favor Composition over Inheritance). A öröklődésnél mindenképpen el kell gondolkodni a viselkedésről is, nem csak a struktúráról. Ahelyett, hogy a öröklődést mint egy is-a relációt tekintjük, és eközben csak az adatstruktúrára gondolunk, inkább egy behaves-as relációból kellene kiindulni és az osztály viselkedését figyelembe venni.

 

Published inElvek