Junior — Middle
Kokiais metodais galima įgyvendinti panašią funkcionalumą nesinaudojant paveldėjimu duomenų struktūrose?
sobes.tech AI
Atsakymas iš AI
Vietoj paveldėjimo duomenų struktūrose, galima naudoti kompoziciją ir protokolus (sąsajas). Pavyzdžiui, Swift dažnai naudoja protokolus apibūdinti elgseną, o konkretūs struktūros juos įgyvendina, kas leidžia išvengti griežtos paveldėjimo hierarchijos.
Taip pat galima naudoti delegavimo modelį, kai viena struktūra turi nuorodą į kitą, kuri įgyvendina reikalingą funkcionalumą.
Pavyzdys Swift kalba naudojant protokolą ir kompoziciją:
protocol Drawable {
func draw()
}
struct Circle: Drawable {
func draw() {
print("Piešiame apskritimą")
}
}
struct Square: Drawable {
func draw() {
print("Piešiame kvadratą")
}
}
struct Canvas {
var shape: Drawable
func render() {
shape.draw()
}
}
let circle = Circle()
let canvas = Canvas(shape: circle)
canvas.render() // Išves: Piešiame apskritimą
Taip funkcionalumas realizuojamas per kompoziciją ir protokolus, o ne per paveldėjimą.