Sobes.tech
Junior — Middle

Jakými metodami lze realizovat podobnou funkci bez použití dědičnosti ve strukturách dat?

sobes.tech AI

Odpověď od AI

Namísto dědičnosti v datových strukturách lze použít kompozici a protokoly (rozhraní). Například v Swift se často používají protokoly k popisu chování a konkrétní struktury tyto protokoly implementují, což umožňuje vyhnout se pevné hierarchii dědičnosti.

Také lze použít vzor delegace, kdy jedna struktura obsahuje odkaz na jinou, která implementuje potřebnou funkcionalitu.

Příklad v Swift s použitím protokolu a kompozice:

protocol Drawable {
    func draw()
}

struct Circle: Drawable {
    func draw() {
        print("Kreslíme kruh")
    }
}

struct Square: Drawable {
    func draw() {
        print("Kreslíme čtverec")
    }
}

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

let circle = Circle()
let canvas = Canvas(shape: circle)
canvas.render()  // Vypíše: Kreslíme kruh

Tímto způsobem je funkčnost realizována přes kompozici a protokoly, nikoli přes dědičnost.