Sobes.tech
Back to questions
Junior — Middle
83

Можешь привести пример того, как применяется принцип подстановки Лисков в практике программирования?

Answer from AI

sobes.tech AI

Принцип подстановки Лисков (Liskov Substitution Principle, LSP) говорит, что объекты подкласса должны быть взаимозаменяемы с объектами базового класса без нарушения корректности работы программы.

Пример на JavaScript (Node.js):

class Bird {
  fly() {
    console.log('Птица летит');
  }
}

class Sparrow extends Bird {
  fly() {
    console.log('Воробей летит');
  }
}

class Ostrich extends Bird {
  fly() {
    throw new Error('Страус не умеет летать');
  }
}

function makeBirdFly(bird) {
  bird.fly();
}

const sparrow = new Sparrow();
makeBirdFly(sparrow); // Воробей летит

const ostrich = new Ostrich();
makeBirdFly(ostrich); // Ошибка — нарушается LSP

Здесь класс Ostrich нарушает принцип подстановки Лисков, так как подкласс не поддерживает поведение базового класса (метод fly). Чтобы соблюдать LSP, лучше разделить классы на летающих и нелетающих птиц, например, через интерфейсы или отдельные базовые классы.