Junior — Middle
Czy możesz pokazać, jak zasada L z SOLID jest stosowana w praktyce programowania?
sobes.tech AI
Odpowiedź od AI
Zasada L w SOLID to zasada podstawiania Liskov. Mówi ona, że obiekty klas pochodnych powinny być wymienialne z obiektami klasy bazowej bez naruszania poprawności działania programu.
Przykład w Kotlin:
open class Bird {
open fun fly() {
println("Ptak lata")
}
}
class Sparrow : Bird() {
override fun fly() {
println("Wróbel lata")
}
}
class Ostrich : Bird() {
override fun fly() {
throw UnsupportedOperationException("Struś nie potrafi latać")
}
}
fun makeBirdFly(bird: Bird) {
bird.fly()
}
fun main() {
val sparrow = Sparrow()
val ostrich = Ostrich()
makeBirdFly(sparrow) // Działa poprawnie
makeBirdFly(ostrich) // Narusza zasadę L, ponieważ struś nie potrafi latać
}
W tym przykładzie klasa Ostrich narusza zasadę L, ponieważ nie obsługuje zachowania klasy bazowej Bird. Aby przestrzegać zasady, należy projektować hierarchię tak, aby klasy pochodne w pełni obsługiwały kontrakt klasy bazowej, na przykład rozdzielając ptaki latające i nielatające w różne hierarchie.