Sobes.tech
Junior — Middle

Observer nümunəsindən istifadə edərək eyni zamanda bir neçə obyektə bildiriş mexanizmi həyata keçirmək mümkündürmü?

sobes.tech Süni İntellekt

AI-dan cavab

Bəli, Observer nümunəsi, subyektin vəziyyətindəki dəyişikliklər barədə bir neçə obyekti xəbərdar etmək üçün xüsusi olaraq hazırlanmışdır. Bu nümunədə, hadisələrə abunə olan müşahidəçilərin (obyektlərin) siyahısını saxlayan subyekt obyekti var. Subyektin vəziyyəti dəyişəndə, o, ardıcıl olaraq bütün abunəçilərə xəbərdarlıq edir.

Swift-də nümunə:

protocol Observer {
    func update()
}

class Subject {
    private var observers = [Observer]()

    func attach(_ observer: Observer) {
        observers.append(observer)
    }

    func notify() {
        observers.forEach { $0.update() }
    }

    func changeState() {
        // vəziyyətin dəyişməsi
        notify() // hamısına xəbərdarlıq
    }
}

class ConcreteObserver: Observer {
    func update() {
        print("Xəbərdarlıq alındı")
    }
}

let subject = Subject()
let observer1 = ConcreteObserver()
let observer2 = ConcreteObserver()
subject.attach(observer1)
subject.attach(observer2)
subject.changeState() // hər iki müşahidəçi xəbərdarlıq alacaq

Beləliklə, Observer nümunəsi çoxsaylı xəbərdarlıq mexanizmini həyata keçirməyə imkan verir.