Принцип подстановки Лисков

Принцип подстановки Лисков

PuzzleCore


Liskov Substitution Principle (LSP).

Доброго времени, уважаемый читатель. Сегодня поговорим о принципе из цикла SOLID, который имеет имя. =)

Сама Барбара Лисков, дает очень понятное описание этому методу, на столько понятное, что, по всему видимому, дошло до нас по причине работ Роберта Мартина.

Барбара Лисков

Лисков, формулирует свой принцип, таким образом:

Пусть q(x) является свойством, верным относительно объектов x некоторого типа T. Тогда q(y) также должно быть верным для объектов y типа S, где S является подтипом типа T.

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

Хорошо, хорошо, я вас понял. =) Продолжаю разбор данного принципа.

Роберт Мартин

Роберт Мартин определил данный принцип так:

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

Теперь простыми словами:

Поведение классов-наследников, не должно противоречить поведению классов-родителей.

Например, есть класс что-то вроде DB. Класс давно живет, работает с базой данных. Приходит в компанию новый программист, и начинает разработку новой фичи. Тут ему приходит в голову: наследую класс, и вот в такой, в такой и в такой метод пишу что то вроде raise Exception... По его задумке это работает, родительский класс, как использовался, так и используется. Дочерний выполняет роль этой самой фичи. Проходит еще время, этот проект перепадает на радость другому программисту. Он начинает работать с проектом, и вот начинается его веселая жизнь, летят эксцепшены, один за другим!

Запомните, если вы делаете не работоспособным, метод класса наследника, или в корне меняете, сказал бы, нарушаете, его логику - вы нарушаете LSP.

Старался максимально кратко и понятно, спасибо!

Подписывайтесь, читайте, ставьте лайки, мне будет очень приятно!)


Report Page