Junior — Middle
Puoi mostrare come si applica il principio L di SOLID nella pratica dello sviluppo?
sobes.tech AI
Risposta dell'AI
Il principio L di SOLID è il principio di sostituzione di Liskov. Esso afferma che gli oggetti delle sottoclassi devono poter essere sostituiti agli oggetti della classe base senza violare la correttezza del programma.
Esempio in Kotlin:
open class Bird {
open fun fly() {
println("Uccello vola")
}
}
class Sparrow : Bird() {
override fun fly() {
println("Passero vola")
}
}
class Ostrich : Bird() {
override fun fly() {
throw UnsupportedOperationException("Struzzo non può volare")
}
}
fun makeBirdFly(bird: Bird) {
bird.fly()
}
fun main() {
val sparrow = Sparrow()
val ostrich = Ostrich()
makeBirdFly(sparrow) // Funziona correttamente
makeBirdFly(ostrich) // Violazione del principio L, poiché lo struzzo non può volare
}
In questo esempio, la classe Ostrich viola il principio L perché non supporta il comportamento della classe base Bird. Per rispettare il principio, bisogna progettare la gerarchia in modo che le sottoclassi supportino completamente il contratto della classe base, ad esempio separando gli uccelli volanti e non volanti in gerarchie diverse.