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.