Junior — Middle
Como é que a ligação da interface a uma implementação específica é realizada durante a execução do programa?
sobes.tech IA
Resposta da IA
No iOS, para ligar a interface a uma implementação específica em tempo de execução, costuma-se usar o padrão de delegação ou protocolos.
Um protocolo define um conjunto de métodos, e uma classe concreta implementa esse protocolo. Em tempo de execução, o objeto da interface referencia um objeto que implementa o protocolo e chama seus métodos. Isso permite alterar a implementação sem modificar a interface.
Exemplo em Swift:
protocol DataSource {
func fetchData() -> String
}
class RealDataSource: DataSource {
func fetchData() -> String {
return "Dados da fonte real"
}
}
class ViewController {
var dataSource: DataSource?
func showData() {
if let data = dataSource?.fetchData() {
print(data)
}
}
}
let vc = ViewController()
vc.dataSource = RealDataSource() // ligação da implementação em tempo de execução
vc.showData() // Vai mostrar: Dados da fonte real
Desta forma, a interface (protocolo) e a implementação são ligados dinamicamente.