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.