Junior — Middle
Ar galima įgyvendinti kelių objektų įspėjimo mechanizmą naudojant Observer modelį?
sobes.tech AI
Atsakymas iš AI
Taip, stebėtojo (Observer) šablonas yra specialiai sukurtas informuoti kelis objektus apie subjekto būsenos pokyčius. Šiame šablone yra subjekto objektas, kuris saugo stebėtojų (objektų) sąrašą, užsiprenumeravusių jo įvykius. Kai subjekto būseną keičia, jis iš eilės praneša visus prenumeratorius.
Pavyzdys Swift kalba:
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() {
// būsenos keitimas
notify() // pranešame visiems
}
}
class ConcreteObserver: Observer {
func update() {
print("Gauta pranešimas")
}
}
let subject = Subject()
let observer1 = ConcreteObserver()
let observer2 = ConcreteObserver()
subject.attach(observer1)
subject.attach(observer2)
subject.changeState() // abu stebėtojai gaus pranešimą
Taip, stebėtojo šablonas leidžia įgyvendinti daugybinio pranešimo mechanizmą.