Sobes.tech
Junior — Middle

Poți arăta cum se aplică principiul L din SOLID în practica dezvoltării?

sobes.tech AI

Răspuns de la AI

Principiul L din SOLID este principiul substituției Liskov. Acesta afirmă că obiectele subclasei trebuie să poată fi înlocuite cu obiecte ale clasei de bază fără a afecta corectitudinea programului.

Exemplu în Kotlin:

open class Bird {
    open fun fly() {
        println("Pasărea zboară")
    }
}

class Sparrow : Bird() {
    override fun fly() {
        println(" vrabia zboară")
    }
}

class Ostrich : Bird() {
    override fun fly() {
        throw UnsupportedOperationException("Struțul nu poate zbura")
    }
}

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

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

    makeBirdFly(sparrow)  // Funcționează corect
    makeBirdFly(ostrich)  // Încălcare a principiului L, deoarece struțul nu poate zbura
}

În acest exemplu, clasa Ostrich încalcă principiul L, deoarece nu suportă comportamentul clasei de bază Bird. Pentru a respecta principiul, trebuie proiectată ierarhia astfel încât subclasele să suporte pe deplin contractul clasei de bază, de exemplu, separând păsările care zboară și cele care nu zboară în ierarhii diferite.