Sobes.tech
Junior — Middle

Observer naqshini yordamida bir vaqtning o'zida bir nechta ob'ektlarga bildirishnoma mexanizmini amalga oshirish mumkinmi?

sobes.tech AI

AIdan javob

Ha, Observer naqshı aynıqsa subyektning holatidagi o'zgarishlar haqida bir nechta ob'ektlarni xabardor qilish uchun mo'ljallangan. Bu naqshda, voqealarga obuna bo'lgan kuzatuvchilar (ob'ektlar) ro'yxatini saqlovchi sub'ekt ob'ekti mavjud. Sub'ekt holati o'zgarganda, u ketma-ket barcha obunachilarga xabar yuboradi.

Swiftda misol:

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() {
        // holat o'zgarishi
        notify() // hamma ob'ektlarga xabar yuborish
    }
}

class ConcreteObserver: Observer {
    func update() {
        print("Xabar olindi")
    }
}

let subject = Subject()
let observer1 = ConcreteObserver()
let observer2 = ConcreteObserver()
subject.attach(observer1)
subject.attach(observer2)
subject.changeState() // ikkala kuzatuvchi ham xabar oladi

Shu tarzda, Observer naqshi ko'p xabar berish mexanizmini amalga oshirish imkonini beradi.