Sobes.tech
Junior — Middle

Quali metodi possono essere utilizzati per implementare una funzionalità simile senza usare l'ereditarietà nelle strutture dati?

sobes.tech AI

Risposta dell'AI

Invece di ereditarietà nelle strutture dati, si può usare composizione e protocolli (interfacce). Ad esempio, in Swift, si usano spesso protocolli per descrivere comportamenti, e le strutture concrete implementano questi protocolli, evitando così una gerarchia di ereditarietà rigida.

Puoi anche usare il pattern di delega, in cui una struttura contiene un riferimento a un'altra che implementa la funzionalità necessaria.

Esempio in Swift con uso di protocollo e composizione:

protocol Drawable {
    func draw()
}

struct Circle: Drawable {
    func draw() {
        print("Disegna un cerchio")
    }
}

struct Square: Drawable {
    func draw() {
        print("Disegna un quadrato")
    }
}

struct Canvas {
    var shape: Drawable
    func render() {
        shape.draw()
    }
}

let circle = Circle()
let canvas = Canvas(shape: circle)
canvas.render()  // Mostrerà: Disegna un cerchio

In questo modo, la funzionalità viene implementata tramite composizione e protocolli, anziché tramite ereditarietà.