Junior — Middle
Milliseid meetodeid saab kasutada sarnase funktsionaalsuse rakendamiseks andmestruktuurides ilma pärandamiseta?
sobes.tech AI
Vastus AI-lt
Andmete struktuurides saab kasutada kompositsiooni ja protokolle (liideseid) selle asemel, et kasutada pärandamist. Näiteks Swiftis kasutatakse sageli protokolle käitumise kirjeldamiseks, ning konkreetseid struktuure, mis neid protokolle rakendavad, mis aitab vältida ranget pärandamise hierarhiat.
Samuti saab kasutada delegatsiooni mustrit, kus üks struktuur sisaldab viidet teisele, mis rakendab vajalikku funktsionaalsust.
Näide Swiftis protokolli ja kompositsiooni kasutamisega:
protocol Drawable {
func draw()
}
struct Circle: Drawable {
func draw() {
print("Joonistame ringi")
}
}
struct Square: Drawable {
func draw() {
print("Joonistame ruudu")
}
}
struct Canvas {
var shape: Drawable
func render() {
shape.draw()
}
}
let circle = Circle()
let canvas = Canvas(shape: circle)
canvas.render() // Väljund: Joonistame ringi
Nii realiseeritakse funktsionaalsus kompositsiooni ja protokollide kaudu, mitte pärandamise kaudu.