Junior — Middle
Ar galite pateikti pavyzdį, kaip Liskovo pakaitos principas taikomas programavimo praktikoje?
sobes.tech AI
Atsakymas iš AI
Liskovo pakaitos principas (Liskov Substitution Principle, LSP) teigia, kad pogrindės klasės objektai turi būti keičiami pagrindinės klasės objektais be programos teisingumo pažeidimo.
Pavyzdys JavaScript (Node.js):
class Bird {
fly() {
console.log('Paukštis skraido');
}
}
class Sparrow extends Bird {
fly() {
console.log('Gervė skraido');
}
}
class Ostrich extends Bird {
fly() {
throw new Error('Strutis negali skristi');
}
}
function makeBirdFly(bird) {
bird.fly();
}
const sparrow = new Sparrow();
makeBirdFly(sparrow); // Gervė skraido
const ostrich = new Ostrich();
makeBirdFly(ostrich); // Klaida — LSP pažeidimas
Čia Ostrich klasė pažeidžia Liskov pakeitimo principą, nes pogrindė nesugeba palaikyti pagrindinės klasės elgesio (fly metodo). Laikantis LSP, geriau klasės skirstyti į skraidančius ir neskraidančius paukščius, pvz., naudojant sąsajas ar atskiras pagrindines klases.