Sobes.tech
Junior — Middle

Kaip vyksta sąsajos susiejimas su konkrečia realizacija programos vykdymo metu?

sobes.tech AI

Atsakymas iš AI

iOS dažnai naudojamas delegavimo (delegate) modelis arba protokolai, siekiant susieti sąsają su konkrečia įgyvendinimu vykdymo metu.

Protokolas apibrėžia metodų rinkinį, o konkretus klasė įgyvendina šį protokolą. Vykdymo metu sąsajos objektas nuoroda į objektą, kuris įgyvendina protokolą, ir kviečia jo metodus. Tai leidžia keisti įgyvendinimą be sąsajos keitimo.

Pavyzdys Swift:

protocol DataSource {
    func fetchData() -> String
}

class RealDataSource: DataSource {
    func fetchData() -> String {
        return "Duomenys iš tikro šaltinio"
    }
}

class ViewController {
    var dataSource: DataSource?

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

let vc = ViewController()
vc.dataSource = RealDataSource() // įgyvendinimo susiejimas vykdymo metu
vc.showData() // Išves: Duomenys iš tikro šaltinio

Taip sąsaja (protokolas) ir įgyvendinimas yra dinamiškai susieti.