Можете объяснить принцип L из SOLID и его значение при проектировании кода?

Принцип L из SOLID — это Принцип подстановки Лисков (Liskov Substitution Principle, LSP). Он гласит, что объекты подкласса должны быть взаимозаменяемы с объектами базового класса без нарушения корректности программы.

Короткий ответ

Что ответить на собеседовании

Принцип L из SOLID — это Принцип подстановки Лисков (Liskov Substitution Principle, LSP). Он гласит, что объекты подкласса должны быть взаимозаменяемы с объектами базового класса без нарушения корректности программы.

Подробный разбор

Ответ с пояснениями

Принцип L из SOLID — это Принцип подстановки Лисков (Liskov Substitution Principle, LSP). Он гласит, что объекты подкласса должны быть взаимозаменяемы с объектами базового класса без нарушения корректности программы.

Проще говоря, если класс B наследует класс A, то везде, где используется объект A, можно подставить объект B, и программа должна работать правильно, не меняя своего поведения.

Значение при проектировании:

  • Обеспечивает правильное наследование и полиморфизм.
  • Помогает избегать неожиданных ошибок при расширении функционала.
  • Способствует созданию гибких и расширяемых архитектур.

Пример на C++:

class Bird {
public:
    virtual void fly() {
        // реализация полёта
    }
};

class Sparrow : public Bird {
    // воробей умеет летать, всё нормально
};

class Ostrich : public Bird {
public:
    void fly() override {
        throw std::logic_error("Страус не умеет летать");
    }
};

Здесь Ostrich нарушает принцип LSP, так как подкласс не поддерживает поведение базового класса. Лучше спроектировать иерархию иначе, например, выделить интерфейс летающих птиц.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку