Можешь показать, как применяется принцип L из SOLID в практике разработки?

Принцип L из SOLID — это принцип подстановки Лисков. Он говорит, что объекты подклассов должны быть взаимозаменяемы с объектами базового класса без нарушения корректности работы программы.

Короткий ответ

Что ответить на собеседовании

Принцип L из SOLID — это принцип подстановки Лисков. Он говорит, что объекты подклассов должны быть взаимозаменяемы с объектами базового класса без нарушения корректности работы программы.

Подробный разбор

Ответ с пояснениями

Принцип L из SOLID — это принцип подстановки Лисков. Он говорит, что объекты подклассов должны быть взаимозаменяемы с объектами базового класса без нарушения корректности работы программы.

Пример на Kotlin:

open class Bird {
    open fun fly() {
        println("Птица летит")
    }
}

class Sparrow : Bird() {
    override fun fly() {
        println("Воробей летит")
    }
}

class Ostrich : Bird() {
    override fun fly() {
        throw UnsupportedOperationException("Страус не умеет летать")
    }
}

fun makeBirdFly(bird: Bird) {
    bird.fly()
}

fun main() {
    val sparrow = Sparrow()
    val ostrich = Ostrich()

    makeBirdFly(sparrow)  // Работает корректно
    makeBirdFly(ostrich)  // Нарушение принципа L, так как страус не умеет летать
}

В этом примере класс Ostrich нарушает принцип L, так как не поддерживает поведение базового класса Bird. Чтобы соблюдать принцип, нужно проектировать иерархию так, чтобы подклассы полностью поддерживали контракт базового класса, например, выделить летающих и нелетающих птиц в разные иерархии.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку