Sobes.tech
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()  // Выведет: Рисуем круг

Таким образом, функционал реализуется через композицию и протоколы, а не через наследование.