Sobes.tech
Junior — Middle

Pouvez-vous expliquer comment fonctionne le pattern Observer et dans quels cas il est utilisé?

sobes.tech IA

Réponse de l'IA

Le pattern Observer (Observateur) permet à un objet (l’émetteur) d’informer d’autres objets (les abonnés) des changements de son état sans lien rigide entre eux. L’émetteur conserve une liste d’abonnés et les notifie lors de changements.

Ce pattern est souvent utilisé pour implémenter des systèmes d’événements, par exemple, dans iOS — NotificationCenter, KVO (Key-Value Observing) ou délégués.

Exemple en 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("Valeur mise à jour à \(value)")
    }
}

let subject = Subject()
let observer = ConcreteObserver()
subject.addObserver(observer)
subject.setValue(10)  // Affichera: Valeur mise à jour à 10

Utilisé lorsque vous souhaitez séparer la source de données des consommateurs et assurer une souscription flexible aux événements.