Sobes.tech
Junior — Middle

Observer nümunəsinin necə işlədiyini və hansı hallarda istifadə olunduğunu izah edə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

İzləyici (Observer) nümunəsi, obyektin (yayımçı) vəziyyətindəki dəyişikliklər barədə digər obyektləri (abunəçilər) məlumatlandırmağa imkan verir, aralarında sərt əlaqə olmadan. Yayımçı abunəçilərin siyahısını saxlayır və dəyişikliklər zamanı onları xəbərdar edir.

Bu nümunə, məsələn, iOS-də NotificationCenter, KVO (Key-Value Observing) və ya delegatlar kimi hadisə sistemlərinin həyata keçirilməsində istifadə olunur.

Swift-də nümunə:

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("Dəyər yeniləndi: \(value)")
    }
}

let subject = Subject()
let observer = ConcreteObserver()
subject.addObserver(observer)
subject.setValue(10)  // Çıxış: Dəyər yeniləndi: 10

Hadisələrə abunə olmağı elastik etmək və məlumat mənbəyini istehlakçılardan ayırmaq üçün istifadə olunur.