Junior — Middle
Ar galite parodyti, kaip taikomas SOLID L principas programavimo praktikoje?
sobes.tech AI
Atsakymas iš AI
SOLID L principas yra Liskovo pakaitos principas. Jis sako, kad paveldimų klasių objektai turi būti keičiami su pagrindinės klasės objektais be programos teisingumo pažeidimo.
Pavyzdys Kotlin:
open class Bird {
open fun fly() {
println("Paukštis skraido")
}
}
class Sparrow : Bird() {
override fun fly() {
println("Gervė skraido")
}
}
class Ostrich : Bird() {
override fun fly() {
throw UnsupportedOperationException("Strutis negali skraidyti")
}
}
fun makeBirdFly(bird: Bird) {
bird.fly()
}
fun main() {
val sparrow = Sparrow()
val ostrich = Ostrich()
makeBirdFly(sparrow) // Veikia teisingai
makeBirdFly(ostrich) // L principo pažeidimas, nes strutis negali skraidyti
}
Šiame pavyzdyje, Ostrich klasė pažeidžia L principą, nes nepalaiko pagrindinės klasės Bird elgesio. Norint laikytis principo, reikia suprojektuoti hierarchiją taip, kad pogrupiai visiškai palaikytų pagrindinės klasės sutartį, pavyzdžiui, atskiriant skraidančius ir neskraidančius paukščius į skirtingas hierarchijas.