Junior — Middle
Welke methoden kunnen worden gebruikt om een vergelijkbare functionaliteit te implementeren zonder gebruik te maken van erfelijkheid in datastructuren?
sobes.tech AI
Antwoord van AI
In plaats van erfelijkheid in datastructuren, kun je compositie en protocollen (interfaces) gebruiken. Bijvoorbeeld, in Swift worden protocollen vaak gebruikt om gedrag te beschrijven, en de concrete structuren implementeren deze protocollen, wat een starre erfhiërarchie vermijdt.
Je kunt ook het delegatiepatroon gebruiken, waarbij één structuur een verwijzing bevat naar een andere die de benodigde functionaliteit implementeert.
Voorbeeld in Swift met gebruik van protocol en compositie:
protocol Drawable {
func draw()
}
struct Circle: Drawable {
func draw() {
print("Tekent een cirkel")
}
}
struct Square: Drawable {
func draw() {
print("Tekent een vierkant")
}
}
struct Canvas {
var shape: Drawable
func render() {
shape.draw()
}
}
let circle = Circle()
let canvas = Canvas(shape: circle)
canvas.render() // Toont: Tekent een cirkel
Op deze manier wordt functionaliteit geïmplementeerd via compositie en protocollen, niet via erfelijkheid.