Junior — Middle
Milyen módszerekkel valósítható meg hasonló funkció anélkül, hogy öröklődést használnánk az adatszerkezetekben?
sobes.tech MI
Válasz az MI-től
Az adatszerkezetekben a öröklés helyett kompozíció és protokollok (interfészek) használhatók. Például Swiftben gyakran alkalmaznak protokollokat a viselkedés leírására, és a konkrét struktúrák ezeket a protokollokat valósítják meg, így elkerülve a merev öröklési hierarchiát.
Szintén használható a delegálási minta, amikor egy struktúra tartalmaz egy másik referenciaját, amely a szükséges funkciókat megvalósítja.
Példa Swiftben protokoll és kompozíció használatával:
protocol Drawable {
func draw()
}
struct Circle: Drawable {
func draw() {
print("Kör rajzolása")
}
}
struct Square: Drawable {
func draw() {
print("Négyzet rajzolása")
}
}
struct Canvas {
var shape: Drawable
func render() {
shape.draw()
}
}
let circle = Circle()
let canvas = Canvas(shape: circle)
canvas.render() // Kimenet: Kör rajzolása
Így a funkcionalitás kompozíció és protokollok révén valósul meg, nem örökléssel.