Junior — Middle
Ar galite paaiškinti, kaip veikia Observer modelis ir kuriais atvejais jis naudojamas?
sobes.tech AI
Atsakymas iš AI
Stebėtojo (Observer) modelis leidžia objektui (leidėjui) pranešti kitus objektus (prenumeratorius) apie savo būsenos pokyčius be griežtos ryšio tarp jų. Leidėjas saugo prenumeratorių sąrašą ir juos informuoja apie pokyčius.
Šis modelis dažnai naudojamas įgyvendinti įvykių sistemas, pavyzdžiui, iOS — NotificationCenter, KVO (Key-Value Observing) arba delegatus.
Pavyzdys Swift kalba:
protocol Observer: AnyObject {
func update(value: Int)
}
class Subject {
private var observers = [Observer]()
private var value: Int = 0 {
didSet {
notify()
}
}
func addObserver(_ observer: Observer) {
observers.append(observer)
}
func setValue(_ newValue: Int) {
value = newValue
}
private func notify() {
observers.forEach { $0.update(value: value) }
}
}
class ConcreteObserver: Observer {
func update(value: Int) {
print("Reikšmė atnaujinta į \(value)")
}
}
let subject = Subject()
let observer = ConcreteObserver()
subject.addObserver(observer)
subject.setValue(10) // Išvestis: Reikšmė atnaujinta į 10
Naudojama, kai reikia atskirti duomenų šaltinį nuo vartotojų ir užtikrinti lankstų įvykių prenumeravimą.