Sobes.tech
Junior — Middle

Koje metode možete koristiti za implementaciju slične funkcionalnosti bez korišćenja nasleđivanja u strukturama podataka?

sobes.tech АИ

Одговор од АИ

Уместо наследства у структурама података, можете да користите композицију и протоколе (интерфејсе). На пример, у Swift-у, често се користе протоколи за описивање понашања, а конкретне структуре реализују те протоколе, што омогућава избегавање чврсте хијерархије наследства.

Такође можете користити патерн делегирања, када једна структура садржи референцу на другу која реализује потребну функционалност.

Пример у Swift-у са коришћењем протокола и композиције:

protocol Drawable {
    func draw()
}

struct Circle: Drawable {
    func draw() {
        print("Рисујемо круг")
    }
}

struct Square: Drawable {
    func draw() {
        print("Рисујемо квадрат")
    }
}

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

let circle = Circle()
let canvas = Canvas(shape: circle)
canvas.render()  // Исписа: Рисујемо круг

На овај начин, функционалност се реализује кроз композицију и протоколе, а не кроз наследство.