Sobes.tech
Junior — Middle

Hogyan különbözik a statikus és dinamik diszpécser a programozásban?

sobes.tech MI

Válasz az MI-től

Statikus elosztás (static dispatch) a fordítás során történik. A fordító előre tudja, melyik metódus lesz hívva, és közvetlenül összekapcsolja a hívást egy adott megvalósítással. Ez magas teljesítményt biztosít, de csökkenti a rugalmasságot.

Dinamikus elosztás (dynamic dispatch) a program futtatása közben történik. A metódushívás az objektum típusától függően a futásidőben dől el, lehetővé téve a polimorfizmust és a metódusok felülírását. iOS-en ez gyakran az Objective-C runtime mechanizmusán keresztül valósul meg, ahol a metódushívások üzenet táblán keresztül történnek.

Swift példával:

class Animal {
    func sound() {
        print("Valamilyen hang")
    }
}

class Dog: Animal {
    override func sound() {
        print("Ugatás")
    }
}

let animal: Animal = Dog()
animal.sound() // A dinamikus elosztásnak köszönhetően "Ugatás" jelenik meg

Itt a sound() hívás futásidőben dől el, ami a dinamikus elosztás példája.