Junior — Middle
198
Vai jūs varētu sniegt piemēru, kā praktiski izmantot Liskov principu kodā vai sistēmā?
Uzņēmumi, kur jautāja
Pashapay
Atbilde no 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 (не умеет летать). Чтобы соблюсти принцип, лучше разделить интерфейсы, например, выделить интерфейс летающих птиц.