Junior — Middle
Vai jūs varat izskaidrot, kā darbojas Observer modelis un kuros gadījumos tas tiek izmantots?
sobes.tech AI
Atbilde no AI
Novērošanas (Observer) paraugs ļauj objektam (izdevējam) paziņot citus objektus (abonentus) par savas stāvokļa izmaiņām bez stingras saistības starp tiem. Izdevējs glabā abonentu sarakstu un tos informē par izmaiņām.
Šis paraugs bieži tiek izmantots, lai īstenotu notikumu sistēmas, piemēram, iOS — NotificationCenter, KVO (Key-Value Observing) vai deleģentus.
Piemērs Swift valodā:
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("Vērtība ir atjaunināta uz \(value)")
}
}
let subject = Subject()
let observer = ConcreteObserver()
subject.addObserver(observer)
subject.setValue(10) // Izvade: Vērtība ir atjaunināta uz 10
Tiek izmantots, kad nepieciešams atdalīt datu avotu no patērētājiem un nodrošināt elastīgu notikumu abonēšanu.