Назад к вопросам
Junior — Middle
89
Можете объяснить принцип L из SOLID и его значение при проектировании кода?
Компании, где спрашивали
РедСофт
Ответ от нейросети
sobes.tech AI
Принцип 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, так как подкласс не поддерживает поведение базового класса. Лучше спроектировать иерархию иначе, например, выделить интерфейс летающих птиц.