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
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)
Sommaire
- Observer Pattern
- Quand l'utiliser ?
- Acteurs principaux
- Exemple pratique : Système de notification de stock
- 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)
- Avantages du pattern Observer
- Inconvénients
- Cas d'usage réels
- Conclusion