Принципы SOLID. Часть 3. Принцип подстановки Барбары Лисков

Принципы SOLID

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

скачать исходники

Основная формулировка рассматриваемого принципа была представлена на конференции в 1987 Барборой Лисков и звучит следующим образом: «Пусть q(x) применимо к объектам x типа T. Тогда q(y) должно быть применимо для объектов y типа S, где S является подтипом T».

Конечно, для начинающего программиста очень сложная и не понятная формулировка, поэтому немного позже в книге Роберта С. Мартина было приведено более понятное и упрощенное определение: «Функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа, не зная об этом».

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

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