Retour aux articlesRetour Accueil

Information sur l'article

Categorie: C#, Design Patterns, Behavioral

Mise à jour: 2025-12-23

Temps de lecture: 8 min

Observer Pattern en C# : notifier les objets des changements d'état

Observer Pattern en C# : notifier les objets des changements d'état

Mise à jour: 2025-12-23


Observer Pattern


Le Observer Pattern définit une dépendance un-à-plusieurs entre objets de sorte que quand un objet change d'état, tous les objets qui en dépendent sont notifiés et mis à jour automatiquement. C'est un exemple de communication un-vers-plusieurs, similaire à un système de diffusion radio où une station émet des signaux et les auditeurs accordent leurs radios sur la fréquence désirée.


Quand l'utiliser ?


- Quand le changement d'un objet requiert de changer d'autres objets et le nombre de ces objets est inconnu

- Quand un objet doit notifier d'autres sans supposer qui sont ces objets

- Quand vous construisez un système d'événements ou un système réactif


Acteurs principaux


Subject (Sujet) : Objet qui gère une liste d'observateurs et notifie les changements

Observer : Interface définissant la méthode de mise à jour

ConcreteObserver : Implémentation de l'observateur qui réagit aux notifications


Exemple pratique : Système de notification de stock


Imaginons un système où le prix d'une action change et plusieurs observateurs (affichages, logs, alertes) doivent être notifiés instantanément.


1. Définir l'interface Observer



2. Créer le Subject



3. Implémenter des Observateurs concrets



4. Utiliser le pattern



Utiliser les événements C# (approche moderne)


En C#, on peut également implémenter le pattern Observer avec des delegates et des events, ce qui est plus idiomatic :


Avantages du pattern Observer


✅ Couplage faible : le sujet ne connaît pas les détails des observateurs

✅ Dynamique : les observateurs peuvent être ajoutés/supprimés à l'exécution

✅ Communication broadcast : un sujet peut notifier plusieurs observateurs


Inconvénients


⚠️ Les observateurs reçoivent les notifications dans un ordre imprévisible

⚠️ Un observateur qui change d'état peut déclencher des notifications en cascade

⚠️ Il est facile d'oublier de se désabonner (fuites mémoire potentielles)


Cas d'usage réels


🎯 Systèmes d'événements (MVC, WinForms, WPF)

🎯 Réactivité (Reactive Extensions - Rx#)

🎯 Systèmes de notifications en temps réel

🎯 Architecture Model-View-ViewModel (MVVM)