Sobes.tech
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.