Junior — Middle
100
¿Puedes dar un ejemplo de cómo se aplica el principio de sustitución de Liskov en la práctica de la programación?
Respuesta de la IA
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, лучше разделить классы на летающих и нелетающих птиц, например, через интерфейсы или отдельные базовые классы.