Sobes.tech
Junior — Middle

Vai ir iespējams īstenot vairāku objektu paziņošanas mehānismu, izmantojot Observer paraugu?

sobes.tech AI

Atbilde no AI

Jā, novērošanas (Observer) paraugs ir īpaši paredzēts, lai paziņotu vairākām objektiem par subjekta stāvokļa izmaiņām. Šajā paraugā ir subjekta objekts, kas uztur sarakstu ar novērotājiem (objektiem), kas ir abonējuši tā notikumus. Kad subjekta stāvoklis mainās, tas secīgi paziņo visus abonentus.

Piemērs Swift valodā:

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() {
        // stāvokļa maiņa
        notify() // paziņojam visiem
    }
}

class ConcreteObserver: Observer {
    func update() {
        print("Saņemts paziņojums")
    }
}

let subject = Subject()
let observer1 = ConcreteObserver()
let observer2 = ConcreteObserver()
subject.attach(observer1)
subject.attach(observer2)
subject.changeState() // abi novērotāji saņems paziņojumu

Tādējādi, Observer paraugs ļauj īstenot daudzlīmeņu paziņošanas mehānismu.