Sobes.tech
Back to questions
Junior — Middle
134

Мог бы ты привести пример использования принципа Лисков в практическом коде или системе?

Companies where asked
Pashapay

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