Sobes.tech
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.