Sobes.tech
Junior — Middle

Kun je uitleggen hoe het Observer-patroon werkt en in welke gevallen het wordt gebruikt?

sobes.tech AI

Antwoord van AI

Het Observer-patroon (Waarnemer) stelt een object (de uitgever) in staat om andere objecten (abonnees) te informeren over veranderingen in zijn toestand zonder een strakke koppeling tussen hen. De uitgever houdt een lijst van abonnees bij en informeert hen bij wijzigingen.

Dit patroon wordt vaak gebruikt voor het implementeren van gebeurtenissystemen, bijvoorbeeld in iOS — NotificationCenter, KVO (Key-Value Observing) of delegates.

Voorbeeld in Swift:

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("Waarde bijgewerkt naar \(value)")
    }
}

let subject = Subject()
let observer = ConcreteObserver()
subject.addObserver(observer)
subject.setValue(10)  // Output: Waarde bijgewerkt naar 10

Gebruikt wanneer het nodig is om de gegevensbron te scheiden van de consumenten en een flexibele inschrijving op gebeurtenissen te garanderen.