Junior — Middle
Observer naqshasi qanday ishlashini va qaysi hollarda foydalanilishini tushuntirib bera olasizmi?
sobes.tech AI
AIdan javob
Observer (Kuzatuvchi) naqshati ob'ekt (nashr qiluvchi) o'z holatidagi o'zgarishlar haqida boshqa ob'ektlarga (obunachilar) ogohlantirish imkonini beradi, ular orasida qattiq bog'lanish bo'lmaydi. Nashr qiluvchi obunachilar ro'yxatini saqlaydi va ularni o'zgarishlar bo'lsa, xabardor qiladi.
Ushbu naqsh odatda voqealar tizimlarini amalga oshirish uchun ishlatiladi, masalan, iOSda NotificationCenter, KVO (Key-Value Observing) yoki delegatlar.
Swiftda misol:
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("Qiymat yangilandi: \(value)")
}
}
let subject = Subject()
let observer = ConcreteObserver()
subject.addObserver(observer)
subject.setValue(10) // Chiqish: Qiymat yangilandi: 10
Voqealarga obuna bo'lishni moslashuvchan qilish va ma'lumot manbasini iste'molchilardan ajratish uchun ishlatiladi.