Junior — Middle
¿Puedes mostrar cómo se aplica el principio L de SOLID en la práctica del desarrollo?
sobes.tech AI
Respuesta de la IA
El principio L de SOLID es el principio de sustitución de Liskov. Dice que los objetos de las clases derivadas deben ser intercambiables con los objetos de la clase base sin violar la corrección del programa.
Ejemplo en Kotlin:
open class Bird {
open fun fly() {
println("El pájaro vuela")
}
}
class Sparrow : Bird() {
override fun fly() {
println("El gorrión vuela")
}
}
class Ostrich : Bird() {
override fun fly() {
throw UnsupportedOperationException("El avestruz no puede volar")
}
}
fun makeBirdFly(bird: Bird) {
bird.fly()
}
fun main() {
val sparrow = Sparrow()
val ostrich = Ostrich()
makeBirdFly(sparrow) // Funciona correctamente
makeBirdFly(ostrich) // Violación del principio L, ya que el avestruz no puede volar
}
En este ejemplo, la clase Ostrich viola el principio L, ya que no soporta el comportamiento de la clase base Bird. Para cumplir con el principio, se debe diseñar la jerarquía de modo que las subclases soporten completamente el contrato de la clase base, por ejemplo, separando las aves que vuelan y las que no en diferentes jerarquías.