Junior — Middle
Можеш ли да покажеш како се принцип L из SOLID примењује у пракси развоја?
sobes.tech АИ
Одговор од АИ
Princip L iz SOLID je princip zamene Liskov. On kaže da objekti podklasa treba da budu zamenjivi sa objektima osnovne klase bez narušavanja ispravnosti programa.
Primer u Kotlinu:
open class Bird {
open fun fly() {
println("Ptica leti")
}
}
class Sparrow : Bird() {
override fun fly() {
println("Soko leti")
}
}
class Ostrich : Bird() {
override fun fly() {
throw UnsupportedOperationException("Struć ne može da leti")
}
}
fun makeBirdFly(bird: Bird) {
bird.fly()
}
fun main() {
val sparrow = Sparrow()
val ostrich = Ostrich()
makeBirdFly(sparrow) // Funkcioniše ispravno
makeBirdFly(ostrich) // Kršenje principa L, jer struć ne može da leti
}
U ovom primeru, klasa Ostrich krši princip L jer ne podržava ponašanje osnovne klase Bird. Da bismo poštovali princip, treba dizajnirati hijerarhiju tako da podklase u potpunosti podržavaju ugovor osnovne klase, na primer, razdvajajući ptice koje lete i one koje ne lete u različite hijerarhije.