Junior — Middle
Kas saaksite anda näidet, kuidas Liskovi asenduspõhimõte rakendub programmeerimise praktikas?
sobes.tech AI
Vastus AI-lt
Liskovi asenduspõhimõte (Liskov Substitution Principle, LSP) ütleb, et alamsüsteemi objektid peavad olema asendatavad põhiklassi objektidega, ilma et see mõjutaks programmi õiget tööd.
Näide JavaScriptis (Node.js):
class Bird {
fly() {
console.log('Lind lendab');
}
}
class Sparrow extends Bird {
fly() {
console.log('Vihma lendab');
}
}
class Ostrich extends Bird {
fly() {
throw new Error('Struts ei saa lennata');
}
}
function makeBirdFly(bird) {
bird.fly();
}
const sparrow = new Sparrow();
makeBirdFly(sparrow); // Vihma lendab
const ostrich = new Ostrich();
makeBirdFly(ostrich); // Viga — LSP rikkumine
Siin rikub Ostrich klass Liskovi asenduspõhimõtte, kuna alamklass ei toeta põhiklassi (fly meetod) käitumist. LSP järgimiseks on parem klassid jagada lendavateks ja mitte-lendavateks lindudeks, näiteks kasutades liideseid või eraldi põhiklasse.