Встречается на 18% собеседований по Mobile

За что отвечает "L" в "SOLID"

Буква "L" означает Принцип подстановки Лисков (Liskov Substitution Principle, LSP). Этот принцип был введен Барбарой Лисков в 1987 году в её конференц-докладе "Data abstraction and hierarchy".

Принцип подстановки Лисков
Гласит, что объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения правильности выполнения программы. Это значит, что классы, создающие объекты, должны использовать интерфейсы своих базовых классов таким образом, чтобы не нарушать работу программы при замене объектов базового класса на объекты производного класса.

Рассмотрим пример с классами "Птица" и "Утка", где "Утка" является подклассом "Птицы". Если в классе "Птица" есть метод "летать()", и мы попытаемся вызвать этот метод для объекта класса "Пингвин" (который также является подклассом "Птицы"), но пингвины не умеют летать, то это будет нарушением LSP. В данном случае использование интерфейса "Птица" для "Пингвина" приводит к неправильному поведению.

Как его соблюдать

1. Подклассы не должны изменять поведение базового класса: Подклассы не должны переопределять реализованные методы базового класса таким образом, чтобы изменить их поведение в контексте, который предполагается базовым классом.

2. Не должно быть необходимости проверять типы подклассов: Клиентский код, работающий с базовым классом, не должен включать проверки типов подклассов для корректной работы.

3. Используйте контракты: Для обеспечения соблюдения LSP можно использовать контракты (например, предусловия и постусловия) для методов, чтобы явно указать, как должны вести себя подклассы.

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

April 23, 2024, easyoffer

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы