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() // Исписа: Рисујемо круг
На овај начин, функционалност се реализује кроз композицију и протоколе, а не кроз наследство.