Junior — Middle
Jakými metodami lze realizovat podobnou funkci bez použití dědičnosti ve strukturách dat?
sobes.tech AI
Odpověď od AI
Namísto dědičnosti v datových strukturách lze použít kompozici a protokoly (rozhraní). Například v Swift se často používají protokoly k popisu chování a konkrétní struktury tyto protokoly implementují, což umožňuje vyhnout se pevné hierarchii dědičnosti.
Také lze použít vzor delegace, kdy jedna struktura obsahuje odkaz na jinou, která implementuje potřebnou funkcionalitu.
Příklad v Swift s použitím protokolu a kompozice:
protocol Drawable {
func draw()
}
struct Circle: Drawable {
func draw() {
print("Kreslíme kruh")
}
}
struct Square: Drawable {
func draw() {
print("Kreslíme čtverec")
}
}
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 způsobem je funkčnost realizována přes kompozici a protokoly, nikoli přes dědičnost.