Sobes.tech
Junior — Middle

Оё метавонед нишон диҳед, ки принсипи L-и SOLID дар амал чӣ гуна истифода мешавад?

sobes.tech AI

Ҷавоб аз 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-ро дастгирӣ намекунад. Барои риояи принсип, бояд иерархияро тавре тарҳрезӣ кард, ки зери синфҳо пурра шартномаи синфи асосиро дастгирӣ кунанд, масалан, парвозкунанда ва парвознашудаи паррандаҳоро дар иерархияҳои мухталиф ҷудо кардан.