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.