Sobes.tech
Junior — Middle

Este posibil să implementați un mecanism de notificare pentru mai multe obiecte simultan folosind pattern-ul Observer?

sobes.tech AI

Răspuns de la AI

Da, pattern-ul Observer este conceput special pentru a notifica mai multe obiecte despre schimbările de stare ale subiectului. În acest pattern, există un obiect-subiect care păstrează o listă de observatori (obiecte) înscrise la evenimentele sale. Când starea subiectului se schimbă, acesta notifică secvențial toți abonații.

Exemplu în 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() {
        // schimbare stare
        notify() // notificăm pe toți
    }
}

class ConcreteObserver: Observer {
    func update() {
        print("Notificare primită")
    }
}

let subject = Subject()
let observer1 = ConcreteObserver()
let observer2 = ConcreteObserver()
subject.attach(observer1)
subject.attach(observer2)
subject.changeState() // ambii observatori vor primi notificarea

Astfel, pattern-ul Observer permite implementarea unui mecanism de notificare multiplă.