Junior
61
questionbank

За что отвечает буква 'L' в принципах SOLID?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Принцип замещения Барбары Лисков (Liskov Substitution Principle).

Согласно этому принципу, объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения правильности выполнения программы.

Иными словами, если класс B является подтипом класса A, тогда любой объект типа A в программе может быть заменен на объект типа B, и при этом программа продолжит работать корректно.

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

Нарушение LSP:

swift

В примере Square нарушает LSP, так как изменение одного измерения (width или height) также меняет другое. Если мы используем объект Square там, где ожидался Rectangle, это может привести к неожиданному поведению, так как код, работающий с Rectangle, может предполагать возможность независимого изменения сторон.

Соответствие LSP:

Чтобы соблюсти LSP в данном случае, можно разделить иерархию или использовать композицию вместо наследования для Square. Например, ввести общий интерфейс или протокол для фигур, которые имеют площадь, и реализовать его в Rectangle и Square.

swift

Теперь Square и Rectangle реализуют общий протокол Shape, и мы можем использовать объекты обоих классов там, где ожидается Shape, без нарушения ожидаемого поведения.