Sobes.tech
Junior — Middle

Ako sa počas behu programu realizuje väzba rozhrania na konkrétnu implementáciu?

sobes.tech AI

Odpoveď od AI

V iOS sa často používa vzor delegácie (delegate) alebo protokoly (protocols) na prepojenie rozhrania s konkrétnou implementáciou počas behu.

Protokol definuje súbor metód a konkrétna trieda tento protokol implementuje. Počas behu odkazuje objekt rozhrania na objekt, ktorý implementuje protokol, a volá jeho metódy. To umožňuje meniť implementáciu bez zmeny rozhrania.

Príklad v Swift:

protocol DataSource {
    func fetchData() -> String
}

class RealDataSource: DataSource {
    func fetchData() -> String {
        return "Dáta z reálneho zdroja"
    }
}

class ViewController {
    var dataSource: DataSource?

    func showData() {
        if let data = dataSource?.fetchData() {
            print(data)
        }
    }
}

let vc = ViewController()
vc.dataSource = RealDataSource() // prepojenie implementácie počas behu
vc.showData() // Vypíše: Dáta z reálneho zdroja

Týmto spôsobom sú rozhranie (protokol) a implementácia dynamicky prepojené.