Sobes.tech
Junior — Middle

Milyen módszerekkel valósítható meg hasonló funkció anélkül, hogy öröklődést használnánk az adatszerkezetekben?

sobes.tech MI

Válasz az MI-től

Az adatszerkezetekben a öröklés helyett kompozíció és protokollok (interfészek) használhatók. Például Swiftben gyakran alkalmaznak protokollokat a viselkedés leírására, és a konkrét struktúrák ezeket a protokollokat valósítják meg, így elkerülve a merev öröklési hierarchiát.

Szintén használható a delegálási minta, amikor egy struktúra tartalmaz egy másik referenciaját, amely a szükséges funkciókat megvalósítja.

Példa Swiftben protokoll és kompozíció használatával:

protocol Drawable {
    func draw()
}

struct Circle: Drawable {
    func draw() {
        print("Kör rajzolása")
    }
}

struct Square: Drawable {
    func draw() {
        print("Négyzet rajzolása")
    }
}

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

let circle = Circle()
let canvas = Canvas(shape: circle)
canvas.render()  // Kimenet: Kör rajzolása

Így a funkcionalitás kompozíció és protokollok révén valósul meg, nem örökléssel.