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, лучше разделить классы на летающих и нелетающих птиц, например, через интерфейсы или отдельные базовые классы.