Sobes.tech
Junior — Middle

Meg tudod mutatni, hogyan alkalmazzák a SOLID L elvét a fejlesztés gyakorlatában?

sobes.tech MI

Válasz az MI-től

A SOLID L elve a Liskov-helyettesítési elv. Azt mondja, hogy az alosztályok objektumai helyettesíthetik az ősosztály objektumait anélkül, hogy a program helyességét sértenék.

Példa Kotlinban:

open class Bird {
    open fun fly() {
        println("A madár repül")
    }
}

class Sparrow : Bird() {
    override fun fly() {
        println("A veréb repül")
    }
}

class Ostrich : Bird() {
    override fun fly() {
        throw UnsupportedOperationException("A strucc nem tud repülni")
    }
}

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

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

    makeBirdFly(sparrow)  // Működik helyesen
    makeBirdFly(ostrich)  // A L elv megsértése, mert a strucc nem tud repülni
}

Ebben a példában az Ostrich osztály megsérti a L elvet, mivel nem támogatja a Bird osztály viselkedését. Az elv betartásához úgy kell tervezni a hierarchiát, hogy az alosztályok teljes mértékben támogassák a szülőosztály szerződését, például külön választva a repülő és nem repülő madarakat külön hierarchiákba.