Aller au contenu

Observer

Contexte : Définir une dépendance un‑à‑plusieurs entre objets de sorte que lorsqu’un objet change d’état, tous ses dépendants soient notifiés et mis à jour automatiquement.

public interface IObserver
{
void Update(string message);
}
public class ConcreteObserver : IObserver
{
private string _name;
public ConcreteObserver(string name) => _name = name;
public void Update(string message) => Console.WriteLine($"{_name} received: {message}");
}
public class Subject
{
private List<IObserver> _observers = new();
public void Attach(IObserver observer) => _observers.Add(observer);
public void Notify(string message)
{
foreach (var o in _observers) o.Update(message);
}
}

Gestion d’événements dans l’interface utilisateur : Les boutons notifient tous les gestionnaires d’événements enregistrés lorsqu’ils sont cliqués. Plusieurs éléments UI peuvent écouter la même source de données et se rafraîchir lorsque les données changent.

Exemple : Dans .NET, INotifyPropertyChanged est utilisé dans MVVM (WPF, MAUI). System.Reactive (Rx.NET) implémente des séquences observables. Également, EventAggregator dans Prism et IObservable<T> / IObserver<T>.