Sobes.tech
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.