Junior — Middle
Quais métodos podem ser usados para implementar uma funcionalidade semelhante sem usar herança em estruturas de dados?
sobes.tech IA
Resposta da IA
Em vez de herança em estruturas de dados, pode usar composição e protocolos (interfaces). Por exemplo, em Swift, frequentemente usam-se protocolos para descrever comportamentos, e estruturas concretas implementam esses protocolos, o que evita uma hierarquia rígida de herança.
Também pode usar o padrão de delegação, onde uma estrutura contém uma referência a outra que implementa a funcionalidade necessária.
Exemplo em Swift usando protocolo e composição:
protocol Drawable {
func draw()
}
struct Circle: Drawable {
func draw() {
print("Desenhar um círculo")
}
}
struct Square: Drawable {
func draw() {
print("Desenhar um quadrado")
}
}
struct Canvas {
var shape: Drawable
func render() {
shape.draw()
}
}
let circle = Circle()
let canvas = Canvas(shape: circle)
canvas.render() // Vai mostrar: Desenhar um círculo
Desta forma, a funcionalidade é implementada através de composição e protocolos, e não através de herança.