Junior — Middle
Akými metódami je možné realizovať podobnú funkcionalitu bez použitia dedičnosti v dátových štruktúrach?
sobes.tech AI
Odpoveď od AI
Namiesto dedičnosti v dátových štruktúrach je možné použiť kompozíciu a protokoly (rozhrania). Napríklad v Swift sa často používajú protokoly na opis správania a konkrétne štruktúry tieto protokoly implementujú, čím sa vyhýba pevnej hierarchii dedičnosti.
Tiež je možné použiť vzor delegovania, keď jedna štruktúra obsahuje odkaz na inú, ktorá implementuje potrebnú funkcionalitu.
Príklad v Swift s použitím protokolu a kompozície:
protocol Drawable {
func draw()
}
struct Circle: Drawable {
func draw() {
print("Kreslíme kruh")
}
}
struct Square: Drawable {
func draw() {
print("Kreslíme štvoruholník")
}
}
struct Canvas {
var shape: Drawable
func render() {
shape.draw()
}
}
let circle = Circle()
let canvas = Canvas(shape: circle)
canvas.render() // Vypíše: Kreslíme kruh
Týmto spôsobom je funkcionalita realizovaná prostredníctvom kompozície a protokolov, nie prostredníctvom dedičnosti.