Back to questions
Junior — Middle
78
Какими методами можно реализовать похожий функционал без использования наследования в структурах данных?
Answer from AI
sobes.tech AI
Вместо наследования в структурах данных можно использовать композицию и протоколы (интерфейсы). Например, в 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() // Выведет: Рисуем круг
Таким образом, функционал реализуется через композицию и протоколы, а не через наследование.