Junior — Middle
Vai vari parādīt, kā SOLID L princips tiek piemērots izstrādes praksē?
sobes.tech AI
Atbilde no AI
SOLID L princips ir Liskova aizvietošanas princips. Tas teic, ka apakšklases objektiem jābūt aizvietojamiem ar pamata klases objektiem, nesabojājot programmas pareizību.
Piemērs Kotlin:
open class Bird {
open fun fly() {
println("Putns lido")
}
}
class Sparrow : Bird() {
override fun fly() {
println("Vārna lido")
}
}
class Ostrich : Bird() {
override fun fly() {
throw UnsupportedOperationException("Ostrich nevar lidot")
}
}
fun makeBirdFly(bird: Bird) {
bird.fly()
}
fun main() {
val sparrow = Sparrow()
val ostrich = Ostrich()
makeBirdFly(sparrow) // Darbojas pareizi
makeBirdFly(ostrich) // L principa pārkāpums, jo ostrich nevar lidot
}
Šajā piemērā, Ostrich klase pārkāpj L principu, jo tā neatbalsta pamata klases Bird uzvedību. Lai ievērotu principu, ir jāprojektē hierarhija tā, lai apakšklases pilnībā atbalstītu pamata klases līgumu, piemēram, atdalot lidojošus un nelidojošus putnus dažādās hierarhijās.