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.