.Net Review
Принципы SOLID. Принцип подстановки Лисков
Третий принцип SOLID, принцип подстановки Барбары Лисков(Liskov Substitution Principle) можно описать следующим образом: должна быть возможность вместо базового типа использовать любой его подтип. Как это реализовать и что это значит, подробнее в этой статье.
Зачем придерживаться принципа?
Объяснение на примере будет нагляднее. Напишем класс постройки автомобиля, в который передаем кол-во колес. Далее напишем класс постройки тягачей, который наследуется от автомобиля.
Допустим в процессе работы программы нам необходимо использовать автомобили или тягачи. Программа ожидает похожего поведения от первого и второго класса.
Однако, если мы используем общий метод работы с автомобилем (в нашем случае получение кол-во осей), то программа выдаст ошибку, т.к. ожидается поведение автомобиля, а выходит, что тягач не выполняет эти требования.
Вывод следующий: нельзя допускать разное поведение классов наследников.
Как решить проблему?
Для решения проблемы необходимо придерживаться нескольких правил:
- Предусловия. Проверки в начале методов должны быть идентичны классу родителю. Нельзя добавлять дополнительные, убирать и изменять.
- Постусловия. Проверки результатов методов должны быть идентичны классу родителю. Нельзя добавлять дополнительные, убирать и изменять.
- Инварианты. Проверки свойств класса должны соответствовать проверкам свойств класса родителя.
Итог
Всё нельзя, а как можно? Если возникла такая ситуация, когда условия Лисков не соблюдается, это может свидетельствовать о неправильно разработанной архитектуре или о неправильном использовании класса. Тем не менее, важно помнить, что принципы SOLID это рекомендации.
В следующих статьях подробнее о других принципах. Спасибо за внимание!
Исходный код: pastebin.
Больше информации по .Net в нашем телеграмм канале.