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