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.