Junior — Middle
Da li je moguće implementirati mehanizam obaveštavanja više objekata istovremeno pomoću obrasca Observer?
sobes.tech АИ
Одговор од АИ
Da, obrazaćać Observer je namenjen posebno za obaveštavanje više objekata o promenama stanja subjekta. U ovom obrascu, postoji objekat-subjekt koji održava listu posmatrača (objekata) koji su prijavljeni na njegove događaje. Kada se stanje subjekta promeni, on redom obaveštava sve pretplatnike.
Primer u Swift:
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() {
// promena stanja
notify() // obaveštavamo sve
}
}
class ConcreteObserver: Observer {
func update() {
print("Primljeno obaveštenje")
}
}
let subject = Subject()
let observer1 = ConcreteObserver()
let observer2 = ConcreteObserver()
subject.attach(observer1)
subject.attach(observer2)
subject.changeState() // oba posmatrača će dobiti obaveštenje
Na ovaj način, obrazac Observer omogućava implementaciju mehanizma višestrukog obaveštavanja.