Junior — Middle
Comment implémenteriez-vous le modèle de conception Observer?
sobes.tech IA
Réponse de l'IA
Le modèle de conception Observer est utilisé pour organiser l’abonnement d’objets observateurs aux événements ou aux changements d’état d’un autre objet (le sujet). Sur iOS, il peut être implémenté de plusieurs manières, par exemple via des protocoles et des délégués, NotificationCenter ou une implémentation personnalisée.
Exemple d’implémentation simple via un protocole :
protocol Observer: AnyObject {
func update(data: String)
}
class Subject {
private var observers = [Observer]()
private var state: String = ""
func attach(observer: Observer) {
observers.append(observer)
}
func detach(observer: Observer) {
observers.removeAll { $0 === observer }
}
func setState(_ newState: String) {
state = newState
notify()
}
private func notify() {
for observer in observers {
observer.update(data: state)
}
}
}
class ConcreteObserver: Observer {
func update(data: String) {
print("Observer received update: \(data)")
}
}
// Utilisation :
let subject = Subject()
let observer1 = ConcreteObserver()
subject.attach(observer: observer1)
subject.setState("Nouvel état")
Cette approche permet aux objets de s’abonner et de recevoir des notifications de changements sans lien étroit entre eux.