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); }}Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »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>.