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