Junior — Middle
Observer desenliğinin nasıl çalıştığını ve hangi durumlarda kullanıldığını açıklayabilir misiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Observer (Gözlemci) deseni, bir nesnenin (yayıncı) durumundaki değişiklikleri, bunlar arasında sıkı bir bağ olmadan diğer nesnelere (abonelere) bildirmesine olanak tanır. Yayıncı, abone listesini tutar ve değişiklikler olduğunda onları bilgilendirir.
Bu desen, genellikle olay tabanlı sistemlerin uygulanmasında kullanılır, örneğin iOS'ta NotificationCenter, KVO (Key-Value Observing) veya delegeler gibi.
Swift'te örnek:
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("Değer güncellendi: \(value)")
}
}
let subject = Subject()
let observer = ConcreteObserver()
subject.addObserver(observer)
subject.setValue(10) // Çıktı: Değer güncellendi: 10
Olaylara abone olmayı esnek hale getirmek ve veri kaynağını tüketicilerden ayırmak için kullanılır.