Sobes.tech
Junior — Middle

Kas on võimalik rakendada mitme objekti teavitamise mehhanismi, kasutades Observer mustrit?

sobes.tech AI

Vastus AI-lt

Jah, jälgija (Observer) muster on spetsiaalselt loodud mitme objekti teavitamiseks subjekti oleku muutustest. Selles muster on objekti-objekt, mis hoiab nimekirja jälgijatest (objektidest), kes on registreeritud selle sündmustele. Kui subjekti olek muutub, teavitab ta järjekindlalt kõiki tellijaid.

Näide Swiftis:

protocol Observer {
    func update()
}

class Subject {
    private var observers = [Observer]()

    func attach(_ observer: Observer) {
        observers.append(observer)
    }

    func notify() {
        observers.forEach { $0.update() }
    }

    func changeState() {
        // oleku muutmine
        notify() // teavitame kõiki
    }
}

class ConcreteObserver: Observer {
    func update() {
        print("Teade saadud")
    }
}

let subject = Subject()
let observer1 = ConcreteObserver()
let observer2 = ConcreteObserver()
subject.attach(observer1)
subject.attach(observer2)
subject.changeState() // mõlemad jälgijad saavad teate

Nii võimaldab jälgija muster rakendada mitme teavitamise mehhanismi.