Sobes.tech
Junior — Middle

Hogyan valósul meg az interfész kötése egy konkrét megvalósításhoz a program futása közben?

sobes.tech MI

Válasz az MI-től

Az iOS-ben az interfészhez egy adott megvalósítást gyakran a delegálás (delegate) minta vagy protokollok (protocols) segítségével kötjük össze.

Egy protokoll meghatározza a metódusok halmazát, és egy konkrét osztály megvalósítja ezt a protokollt. Futásidőben az interfész objektuma egy olyan objektumra hivatkozik, amely megvalósítja a protokollt, és meghívja annak metódusait. Ez lehetővé teszi a megvalósítás cseréjét az interfész módosítása nélkül.

Swift példában:

protocol DataSource {
    func fetchData() -> String
}

class RealDataSource: DataSource {
    func fetchData() -> String {
        return "Adatok a valódi forrásból"
    }
}

class ViewController {
    var dataSource: DataSource?

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

let vc = ViewController()
vc.dataSource = RealDataSource() // futásidőben kötött megvalósítás
vc.showData() // Kiírja: Adatok a valódi forrásból

Így az interfész (protokoll) és a megvalósítás dinamikusan kapcsolódik.