Принцип подстановки Лисков (LSP) гласит, что подклассы должны быть заменяемы на свои базовые классы без нарушения работы системы. Нарушение происходит, когда подкласс принципиально изменяет поведение метода так, что это противоречит контракту базового класса.
Представь базовый класс с методом Add:
public class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
}
Если подкласс переопределяет этот метод и возвращает совсем что-то другое:
public class BrokenCalculator : Calculator
{
public override int Add(int a, int b)
{
return (a - b) * 2; // Нарушает LSP
}
}
Такое нарушение создаёт серьёзные проблемы:
Add(), получает результаты, противоречащие задокументированному контракту методаЧтобы правильно следовать LSP, методы подкласса должны сохранять семантику методов родительского класса. Они могут расширять функциональность, но никогда не должны нарушать исходный контракт или менять ожидаемое поведение.
Принцип подстановки Барбары Лисков требует, чтобы метод подкласса производил идентичные результаты методу родительского класса для сохранения возможности подстановки.
Новый — ещё не проверен сообществом
Вы