Junior — Middle
Ce metode pot fi utilizate pentru a implementa o funcționalitate similară fără a folosi moștenirea în structurile de date?
sobes.tech AI
Răspuns de la AI
În loc de moștenire în structurile de date, se poate folosi compoziție și protocoale (interfețe). De exemplu, în Swift, se folosesc frecvent protocoale pentru a descrie comportamentul, iar structurile concrete implementează aceste protocoale, evitând astfel o ierarhie rigidă de moștenire.
De asemenea, se poate folosi pattern-ul de delegare, când o structură conține o referință la alta care implementează funcționalitatea necesară.
Exemplu în Swift cu utilizarea protocolului și compoziției:
protocol Drawable {
func draw()
}
struct Circle: Drawable {
func draw() {
print("Desenează un cerc")
}
}
struct Square: Drawable {
func draw() {
print("Desenează un pătrat")
}
}
struct Canvas {
var shape: Drawable
func render() {
shape.draw()
}
}
let circle = Circle()
let canvas = Canvas(shape: circle)
canvas.render() // Va afișa: Desenează un cerc
Astfel, funcționalitatea este implementată prin compoziție și protocoale, nu prin moștenire.