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.