Sobes.tech
Junior — Middle

Kas sa saad näidata, kuidas SOLID-i L põhimõtet arenduses rakendatakse?

sobes.tech AI

Vastus AI-lt

SOLID-i L printsiiv on Liskovi asendamise printsiip. See ütleb, et alamsüsteemide objektid peaksid olema asendatavad põhiklassi objektidega ilma, et see mõjutaks programmi õigsust.

Näide Kotlinis:

open class Bird {
    open fun fly() {
        println("Lind lendab")
    }
}

class Sparrow : Bird() {
    override fun fly() {
        println("Varblane lendab")
    }
}

class Ostrich : Bird() {
    override fun fly() {
        throw UnsupportedOperationException("Struts ei saa lennata")
    }
}

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

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

    makeBirdFly(sparrow)  // Töötab õigesti
    makeBirdFly(ostrich)  // L printsiivi rikkumine, sest struts ei saa lennata
}

Selles näites rikub Ostrich klass L printsiivi, kuna see ei toeta põhiklassi Bird käitumist. Printsiivi järgimiseks tuleb disainida hierarhia nii, et alamklassid toetaksid täielikult põhiklassi lepingut, näiteks eraldades lendavad ja mitte-lendavad linnud erinevatesse hierarhiatesse.