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

Буква L означает «Принцип подстановки Барбары Лисков» («Liskov Substitution Principle» или «LSP»). И означает что должна быть возможность вместо базового (родительского) типа (класса) подставить любой его подтип (класс-наследник), при этом работа программы не должна измениться.

Другими словами: если в коде программы Базовый класс заменить на его Наследника, то программа должна работать, так как в Наследнике есть все операции, которые были в Базовом. В Базовый класс нужно выносить только общую логику, которую наследники будут реализовывать. Наследников создаем только тогда, когда они правильно собираются реализовать логику Базового класса без проблем.

Барбара Лисков — это американский учёный в области информатики.

Как следовать принципу LSP

Производный класс должен сохранять все свойства базового класса и не изменять их семантику. Нужно добиться того, чтобы объекты производных классов могли безопасно заменять друг друга и базовый класс.

Пример с нарушеним принципа:

class Shape
{
    public float area() {
        return 0;
    }
}

class Circle extends Shape
{
    private float radius;

    public float area() {
        return Math.PI * radius * radius;
    }
}

class Square extends Shape
{
    private float side;

    public float area() {
        return side * side;
    }
}

Пример с использованием принципа:

abstract class Shape {
    public abstract double area();
}

class Circle extends Shape {
    private double radius;

    @Override
    public double area() {
        return Math.PI * radius * radius;
    }
}

class Square extends Shape {
    private double side;

    @Override
    public double area() {
        return side * side;
    }
}
Запись опубликована в рубрике Это база с метками , . Добавьте в закладки постоянную ссылку.

Добавить комментарий