1278. Что такое Liskov’s Substitution Principle (Принцип подстановки Барбары Лисков)?
Принцип подстановки Барбары Лисков (Liskov's Substitution Principle, LSP) - это принцип SOLID-архитектуры, который гласит, что объекты в программе должны быть заменяемыми их наследниками без изменения корректности программы.
Пример на Java:
class Bird {
public void fly() {
// выполнение полета }
}
class Duck extends Bird {
public void swim() {
// выполнение плавания }
}
class Ostrich extends Bird {
public void run() {
// выполнение бега }
}
public class Main {
public static void main(String[] args) {
Bird duck = new Duck();
duck.fly(); // вызывает метод лета у объекта Duck Bird ostrich = new Ostrich();
ostrich.fly(); // ошибка компиляции, т.к. страус не умеет летать }
}
Здесь подклассы Bird - это наследники класса Bird, который содержит метод fly(). Однако, Ostrich не умеет летать, так что вызов метода fly() приводит к ошибке. Таким образом, Ostrich не является заменяемым на Bird без нарушения принципа LSP.
Пример, который следует принципу LSP:
class Bird {
public void move() {
// выполнение движения }
}
class Duck extends Bird {
public void move() {
// выполнение полета или плавания }
}
class Ostrich extends Bird {
public void move() {
// выполнение бега }
}
public class Main {
public static void main(String[] args) {
Bird duck = new Duck();
duck.move(); // вызывает метод move() у объекта Duck, это может быть полет или плавание
Bird ostrich = new Ostrich();
ostrich.move(); // вызывает метод move() у объекта Ostrich, это бег }
}