Sobes.tech
Junior — Middle

Կարող եք բացատրել, թե ինչպես է աշխատում Observer ձևանմուշը և ինչ դեպքերում է այն օգտագործվում:

sobes.tech AI

Պատասխան AI-ից

Դիտորդի (Observer) նմուշը թույլ է տալիս օբյեկտին (հրատարակչին) տեղեկացնել այլ օբյեկտներին (առցանցներին) իր վիճակի փոփոխությունների մասին առանց նրանց միջև խիստ կապի։ Հրատարակչը պահպանում է գրանցվածների ցանկը և նրանց տեղեկացնում է փոփոխությունների ժամանակ։

Այս նմուշը հաճախ օգտագործվում է իրադարձությունների համակարգեր իրականացնելու համար, օրինակ՝ iOS-ում՝ NotificationCenter, KVO (Key-Value Observing) կամ դելեգատներ։

Swift-ում օրինակ՝

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("Արժեքը թարմացվել է՝ \(value)")
    }
}

let subject = Subject()
let observer = ConcreteObserver()
subject.addObserver(observer)
subject.setValue(10)  // Արտածում՝ Արժեքը թարմացվել է՝ 10

Օգտագործվում է, երբ անհրաժեշտ է տվյալների աղբյուրը բաժանել սպառողներից և ապահովել ճկուն գրանցում իրադարձությունների համար։