Sobes.tech
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.