Junior — Middle
201
Kunt u een voorbeeld geven van het gebruik van het Liskov-principe in praktische code of systemen?
Bedrijven waar gevraagd werd
Pashapay
Antwoord van AI
sobes.tech AI
Принцип подстановки Лисков (Liskov Substitution Principle) гласит, что объекты подкласса должны быть взаимозаменяемы с объектами базового класса без нарушения корректности программы.
Пример на Dart (Flutter):
abstract class Bird {
void fly();
}
class Sparrow implements Bird {
@override
void fly() {
print('Воробей летит');
}
}
class Ostrich implements Bird {
@override
void fly() {
throw Exception('Страус не умеет летать');
}
}
void makeBirdFly(Bird bird) {
bird.fly();
}
void main() {
makeBirdFly(Sparrow()); // Работает корректно
makeBirdFly(Ostrich()); // Нарушение принципа Лисков
}
В этом примере класс Ostrich нарушает принцип Лисков, так как не может корректно заменить Bird (не умеет летать). Чтобы соблюсти принцип, лучше разделить интерфейсы, например, выделить интерфейс летающих птиц.