Back to questions
Junior — Middle
67
Можешь показать, как применяется принцип L из SOLID в практике разработки?
Companies where asked
Dogma
Answer from AI
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. Чтобы соблюдать принцип, нужно проектировать иерархию так, чтобы подклассы полностью поддерживали контракт базового класса, например, выделить летающих и нелетающих птиц в разные иерархии.