Объекты подкласса должны быть взаимозаменяемы с объектами базового класса без нарушения поведения программы. Это значит, что подклассы не должны изменять базовую логику родительских классов или нарушать их контракт.

  • Пример нарушения LSP: Подкласс переопределяет методы родительского класса, изменяя их поведение, что приводит к непредсказуемым результатам при работе с кодом через базовый класс.
  • Решение: Подклассы должны следовать контракту базового класса, не нарушая его поведение.
public class Bird {
    public void fly() {
        // Птица летает
    }
}
 
public class Penguin extends Bird {
    @Override
    public void fly() {
        // Пингвин не может летать — нарушение LSP
    }
}

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


Мета информация

Область:: 00 Архитектура ПО
Родитель:: SOLID
Источник::
Создана:: 2024-09-27
Автор::

Дополнительные материалы

Дочерние заметки