Sobes.tech
Junior — Middle

Mi a különbség a osztálymetódus és a statikus metódus használata között a Singleton megvalósításakor?

sobes.tech MI

Válasz az MI-től

iOS-ben a Singleton mintázat megvalósításakor használhatunk osztálymetódust vagy statikus metódust (például Swiftben — statikus tulajdonságot).

Osztálymetódus (class func) felülírható az alosztályokban, így lehetőség van a Singleton viselkedésének módosítására öröklés során.

Statikus metódus/tulajdonság (static func/var) nem írható felül, így szigorúbb garanciát nyújt az egyetlen példányra.

Swiftben egy példát mutatunk, ahol statikus tulajdonságot használunk Singletonhoz:

class MySingleton {
    static let shared = MySingleton()
    private init() {}
}

Itt a shared egy statikus tulajdonság, amely egyszer inicializálódik és globálisan elérhető.

A Singleton eléréséhez osztálymetódus használata így nézhet ki:

class MySingleton {
    private static var instance: MySingleton?
    class func shared() -> MySingleton {
        if instance == nil {
            instance = MySingleton()
        }
        return instance!
    }
    private init() {}
}

A fő különbség az, hogy az osztálymetódusok felülírhatók és rugalmasabbak, míg a statikus metódusok/tulajdonságok egyszerűbbek és biztonságosabbak.