Назад к вопросам
Junior — Middle
66
Можешь показать, как применяется принцип L из SOLID в практике разработки?
Компании, где спрашивали
Dogma
Ответ от нейросети
sobes.tech AI
Принцип 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. Чтобы соблюдать принцип, нужно проектировать иерархию так, чтобы подклассы полностью поддерживали контракт базового класса, например, выделить летающих и нелетающих птиц в разные иерархии.