Junior — Middle
105
Vai vari sniegt piemēru, kā Liskova aizvietošanas princips tiek piemērots programmēšanas praksē?
Atbilde no 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, лучше разделить классы на летающих и нелетающих птиц, например, через интерфейсы или отдельные базовые классы.