Sobes.tech
Junior — Middle

Vai vari parādīt, kā SOLID L princips tiek piemērots izstrādes praksē?

sobes.tech AI

Atbilde no AI

SOLID L princips ir Liskova aizvietošanas princips. Tas teic, ka apakšklases objektiem jābūt aizvietojamiem ar pamata klases objektiem, nesabojājot programmas pareizību.

Piemērs Kotlin:

open class Bird {
    open fun fly() {
        println("Putns lido")
    }
}

class Sparrow : Bird() {
    override fun fly() {
        println("Vārna lido")
    }
}

class Ostrich : Bird() {
    override fun fly() {
        throw UnsupportedOperationException("Ostrich nevar lidot")
    }
}

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

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

    makeBirdFly(sparrow)  // Darbojas pareizi
    makeBirdFly(ostrich)  // L principa pārkāpums, jo ostrich nevar lidot
}

Šajā piemērā, Ostrich klase pārkāpj L principu, jo tā neatbalsta pamata klases Bird uzvedību. Lai ievērotu principu, ir jāprojektē hierarhija tā, lai apakšklases pilnībā atbalstītu pamata klases līgumu, piemēram, atdalot lidojošus un nelidojošus putnus dažādās hierarhijās.