SlideShare a Scribd company logo
1 of 30
Download to read offline
LE PATTERN
OBSERVER
Plan de la présentation
1. Introductionaux Design Patterns
– Présentationdu concept
– Pourquoi utiliser les design patterns ?
– La classification
2. Le pattern Observer
– Définition du pattern
– Les objets clés et leur comportement
– 2 implémentations possibles : Push & Pull
– Cas d'utilisation
– Avantages et inconvénients
3. Implémentation en TypeScript
4. Parallèle avec le pattern Publisher / Suscriber
5. Sources
6. Conclusion
7. Questions
LES DESIGN
PATTERNS
Introduction
Qu'est-ce
que c'est ?
■ A l'origine, les design patterns sont
issus de l'architecture, avec un concept
de Christophe Alexander dans les
années 1970
■ 23 designs
patterns formalisés par GoF en 1994
■ Ce sont des patrons de conception,
comme les plans d'un architecte
■ Ce sont des idées abstraites de
comment résoudre un problème
récurrent
■ Ce sont de bonnes pratiques
documentées
Pourquoi les
utiliser ?
■ Accélérer le développement
■ Anticiper des problématiques
■ Améliorer la lisibilité du code
■ Utiliser un
vocabulaire commun
■ Rendre le code plus
maintenable : ouvert à
l'extension et fermé à la
modification
La classification
Patterns de Structure
• Expliquent comment
assembler des objets et
des classes en de plus
grandes structures, tout
en les gardant flexibles et
efficaces
Patterns de Création
• Fournissent des
mécanismes de création
d'objets, ce qui augmente
la flexibilité et la
réutilisation du code
Patterns de Comportement
• Mettent en place une
communication efficace et
répartissent les
responsabilités entre les
objets
OBSERVER Catégorie :
Comportement
Le pattern Observer fonctionne
comme un abonnement à un magazine
1. Un éditeur se lance dans les affaires et commence à
diffuser des journaux.
2. Vous souscrivez un abonnement. Chaque fois qu’il y a une
nouvelle édition, vous la recevez. Tant que vous êtes
abonné, vous recevez de nouveaux journaux.
3. Quand vous ne voulez plus de journaux, vous résiliez votre
abonnement. On cesse alors de vous les livrer.
4. Tant que l’éditeur reste en activité, les particuliers, les
hôtels, les compagnies aériennes, etc., ne cessent de
s’abonner et de se désabonner.
Définition
Le pattern Observer définit une dépendance du type 1
à plusieurs entre des objets de manière que, quand un
objet (le sujet) change d'état, tous les objets
dépendants en soient notifiés afin de pouvoir
réagir conformément.
Les objets clés du pattern Observer
• Hérite de la classe abstraite
Observable
• Stocke une liste d'observateurs
• Stocke un état dont dépendentles
observateurs
• Envoie une notification à ses
observateursquand cet état change
Le Sujet
• Implémente l'interfaceObserver
• Garde une référence au sujet
• Stocke l'état du sujet qui doit être
toujours à jour
L'Observateur
Push vs Pull : 2 implémentations
Push permet d'envoyer toutes les
informations du sujet vers les observateurs
via un paramètre dans la méthode update()
Pull notifie simplement les observateurs
et les laisse demander les informations
dont ils ont besoin grâce aux méthodes
publiques du sujet
Quand l'utiliser ?
Utilisez le patron de conception Observer quand des
modifications de l’état d’un objet peuvent en
impacter d’autres, et que l’ensemble des objets
n’est pas connu à l’avance ou qu’il change
dynamiquement.
Avantages
•Modulable : Le pattern Observer permet
de varier les sujets et les
observateurs indépendamment. On peut
réutiliser les sujets sans les mêmes
observateurs et vis-versa. Un
observateur peut également suivre
plusieurs sujets
•Maintenable : Il est possible d'ajouter
des observateurs sans modifier le sujet,
ni les autres observateurs
•Faiblement couplé : Le sujet n'a pas
besoin de connaître la classe concrète
de ses observateurs, elle a juste besoin
de savoir qu'ils implémentent l'interface
Observer
Inconvénients
•Le risque qu'on peut rencontrer est
d'engendrer une cascade d'update des
observateurs au moindre changement
du sujet
•On ne peut pas choisir l'ordre dans
lequel les observateurs sont notifiés
•Il faut bien penser, en cas de
suppression du sujet, à supprimer les
observateurs de la liste pour qu'ils
cessent de suivre son état
IMPLÉMENTATION En TypeScript
L'interface Subject
L'implémentation du Sujet (attributs)
L'implémentation du Sujet (méthodes)
L'interface Observer
Les implémentations des Observateurs
Le client – Output
COMPARAISON
AVEC LE PATTERN
PUBLISHER /
SUSCRIBER
Catégorie :
Comportement
Présentation
Le pattern Publisher / Suscriber est relativement similaire au pattern
Observer, à la différence qu'il n'y a pas d'abonnement direct entre les
Publishers et les Suscribers.
Le publisher et le suscriber ne se connaissent pas l'un l'autre.
A la place, ils ont un lien avec un 3e composant, appelé broker,
message broker ou event bus qui s'occupe de filtrer les messages
des publishers et de les distribuer aux suscribers intéressés.
Il existe plusieurs façons de filtrer les messages, les plus connues
étant Topic-based et Content-based.
On peut considérer le pattern pub sub comme une variation du
pattern Observer, de par la similarité de leur concept.
Différences
Observer
• Les observateursont une référence
au sujet, et le sujet stocke une
liste d'observateurs
• Couplage plus fort
• Synchrone
• Architecture single-application
address space : tout se passe dans la
même application
Publisher / Subscriber
• Les publishers et suscribersne se
connaissentpas les uns les autres,
ils communiquentsimplement à l'aide
de messages queues ou brokers
• Couplage plus faible
• Asynchroneavec une message queue
• Architecturecross-application :
dialogue entre plusieurs applications
Sources
■ Design patterns - Tête la première
■ Refactoring.Guru
■ Tekcollab.imdeo
■ JavaScript Design Pattern (EN)
■ 5 TypeScript Design Patterns You Should Know
En résumé
■ Les Design Patterns sont des
patrons de conception communs à
tous les langages de programmation
■ Le Javascript est un langage
évènementiel basé sur le principe
d'Observer / Observable
(addEventListener)
■ Le pattern Observer fonctionne
comme un abonnement à un
magazine
■ Le pattern Pub / Sub ressemble à
Observer mais s'utilise dans les
architectures distribuées
■ Pub / Sub utilise un broker pour
répartir les messages envoyés par le
publisher dans la bonne queue à
laquelle sera inscrite le suscriber
MERCI POUR
VOTRE ATTENTION
Des questions ?

More Related Content

What's hot

Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web servicesLilia Sfaxi
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWSLilia Sfaxi
 
Architectures orientées services
Architectures orientées servicesArchitectures orientées services
Architectures orientées servicesDonia Hammami
 
Introduction aux web services
Introduction aux web servicesIntroduction aux web services
Introduction aux web servicesmohammed addoumi
 
Architecture des Systèmes Logiciels
Architecture des Systèmes LogicielsArchitecture des Systèmes Logiciels
Architecture des Systèmes LogicielsGhazouani Mahdi
 
Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)Heithem Abbes
 
Programmation réseau en JAVA
Programmation réseau en JAVAProgrammation réseau en JAVA
Programmation réseau en JAVABachir Benyammi
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)Heithem Abbes
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java HéritageNadaBenLatifa
 
Les architectures client serveur
Les architectures client serveurLes architectures client serveur
Les architectures client serveurAmeni Ouertani
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-SéquencesLilia Sfaxi
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyENSET, Université Hassan II Casablanca
 

What's hot (20)

Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web services
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWS
 
Architectures orientées services
Architectures orientées servicesArchitectures orientées services
Architectures orientées services
 
Introduction aux web services
Introduction aux web servicesIntroduction aux web services
Introduction aux web services
 
Cours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxyCours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxy
 
Architecture des Systèmes Logiciels
Architecture des Systèmes LogicielsArchitecture des Systèmes Logiciels
Architecture des Systèmes Logiciels
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
Spring Boot RestApi.pptx
Spring Boot RestApi.pptxSpring Boot RestApi.pptx
Spring Boot RestApi.pptx
 
Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4
 
Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)
 
Cours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapterCours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapter
 
Programmation réseau en JAVA
Programmation réseau en JAVAProgrammation réseau en JAVA
Programmation réseau en JAVA
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Les architectures client serveur
Les architectures client serveurLes architectures client serveur
Les architectures client serveur
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-Séquences
 
Support cours angular
Support cours angularSupport cours angular
Support cours angular
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 
Outils Web Sémantique
Outils Web SémantiqueOutils Web Sémantique
Outils Web Sémantique
 

Similar to Observer pattern

Design patterns comportementaux
Design patterns comportementauxDesign patterns comportementaux
Design patterns comportementauxYannick Chartois
 
Recommandations en matiere de publication scientifique
Recommandations en matiere de publication scientifiqueRecommandations en matiere de publication scientifique
Recommandations en matiere de publication scientifiqueManuel Durand Barthez
 
Recommandations en matiere de publication scientifique
Recommandations en matiere de publication scientifiqueRecommandations en matiere de publication scientifique
Recommandations en matiere de publication scientifiqueURFIST de Paris
 
Mtl apptalks ux mobile et ucd - janvier 2014
Mtl apptalks   ux mobile et ucd - janvier 2014Mtl apptalks   ux mobile et ucd - janvier 2014
Mtl apptalks ux mobile et ucd - janvier 2014Loic Nunez
 
Modele de communication par événement (publish-subscribe)
Modele de communication par événement (publish-subscribe)Modele de communication par événement (publish-subscribe)
Modele de communication par événement (publish-subscribe)Khadidja BOUKREDIMI
 
Comment choisir une bonne revue scientifique.pptx
Comment choisir une bonne revue scientifique.pptxComment choisir une bonne revue scientifique.pptx
Comment choisir une bonne revue scientifique.pptxjosuematabaro
 
Module 5 - Doctorants : veille scientifique
Module 5 - Doctorants : veille scientifiqueModule 5 - Doctorants : veille scientifique
Module 5 - Doctorants : veille scientifiqueMagalie Le Gall
 
Qu'est-ce que décrire un MOOC ?
Qu'est-ce que décrire un MOOC ?Qu'est-ce que décrire un MOOC ?
Qu'est-ce que décrire un MOOC ?Marilyne Rosselle
 
Les outils de veille informationnelle
Les outils de veille informationnelleLes outils de veille informationnelle
Les outils de veille informationnelleAbou Aziz
 
Formation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPFormation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPkemenaran
 
Les outils de veille informationnelle, d’archivage, de rediffusion et de cur...
Les outils de veille informationnelle, d’archivage, de rediffusion et de cur...Les outils de veille informationnelle, d’archivage, de rediffusion et de cur...
Les outils de veille informationnelle, d’archivage, de rediffusion et de cur...Jean-Baptiste Dayez
 
PROGRAMMATION 2e GENIE PARTIE THEORIE.ppt
PROGRAMMATION 2e GENIE PARTIE THEORIE.pptPROGRAMMATION 2e GENIE PARTIE THEORIE.ppt
PROGRAMMATION 2e GENIE PARTIE THEORIE.pptEddySHANGA
 
Jabes 2013 - Poster du Consortium Couperin
Jabes 2013 - Poster du Consortium CouperinJabes 2013 - Poster du Consortium Couperin
Jabes 2013 - Poster du Consortium CouperinABES
 

Similar to Observer pattern (20)

Design patterns comportementaux
Design patterns comportementauxDesign patterns comportementaux
Design patterns comportementaux
 
Observation and measurement data model
Observation and measurement data modelObservation and measurement data model
Observation and measurement data model
 
Recommandations en matiere de publication scientifique
Recommandations en matiere de publication scientifiqueRecommandations en matiere de publication scientifique
Recommandations en matiere de publication scientifique
 
Recommandations en matiere de publication scientifique
Recommandations en matiere de publication scientifiqueRecommandations en matiere de publication scientifique
Recommandations en matiere de publication scientifique
 
Mtl apptalks ux mobile et ucd - janvier 2014
Mtl apptalks   ux mobile et ucd - janvier 2014Mtl apptalks   ux mobile et ucd - janvier 2014
Mtl apptalks ux mobile et ucd - janvier 2014
 
Ojs 3
Ojs 3Ojs 3
Ojs 3
 
Ch 01 poo
Ch 01 pooCh 01 poo
Ch 01 poo
 
Modele de communication par événement (publish-subscribe)
Modele de communication par événement (publish-subscribe)Modele de communication par événement (publish-subscribe)
Modele de communication par événement (publish-subscribe)
 
Comment choisir une bonne revue scientifique.pptx
Comment choisir une bonne revue scientifique.pptxComment choisir une bonne revue scientifique.pptx
Comment choisir une bonne revue scientifique.pptx
 
Module 5 - Doctorants : veille scientifique
Module 5 - Doctorants : veille scientifiqueModule 5 - Doctorants : veille scientifique
Module 5 - Doctorants : veille scientifique
 
Qu'est-ce que décrire un MOOC ?
Qu'est-ce que décrire un MOOC ?Qu'est-ce que décrire un MOOC ?
Qu'est-ce que décrire un MOOC ?
 
Patrons de conception
Patrons de conceptionPatrons de conception
Patrons de conception
 
Présentation
PrésentationPrésentation
Présentation
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Les outils de veille informationnelle
Les outils de veille informationnelleLes outils de veille informationnelle
Les outils de veille informationnelle
 
Veille en sciences
Veille en sciencesVeille en sciences
Veille en sciences
 
Formation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPFormation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHP
 
Les outils de veille informationnelle, d’archivage, de rediffusion et de cur...
Les outils de veille informationnelle, d’archivage, de rediffusion et de cur...Les outils de veille informationnelle, d’archivage, de rediffusion et de cur...
Les outils de veille informationnelle, d’archivage, de rediffusion et de cur...
 
PROGRAMMATION 2e GENIE PARTIE THEORIE.ppt
PROGRAMMATION 2e GENIE PARTIE THEORIE.pptPROGRAMMATION 2e GENIE PARTIE THEORIE.ppt
PROGRAMMATION 2e GENIE PARTIE THEORIE.ppt
 
Jabes 2013 - Poster du Consortium Couperin
Jabes 2013 - Poster du Consortium CouperinJabes 2013 - Poster du Consortium Couperin
Jabes 2013 - Poster du Consortium Couperin
 

Observer pattern

  • 2. Plan de la présentation 1. Introductionaux Design Patterns – Présentationdu concept – Pourquoi utiliser les design patterns ? – La classification 2. Le pattern Observer – Définition du pattern – Les objets clés et leur comportement – 2 implémentations possibles : Push & Pull – Cas d'utilisation – Avantages et inconvénients 3. Implémentation en TypeScript 4. Parallèle avec le pattern Publisher / Suscriber 5. Sources 6. Conclusion 7. Questions
  • 4. Qu'est-ce que c'est ? ■ A l'origine, les design patterns sont issus de l'architecture, avec un concept de Christophe Alexander dans les années 1970 ■ 23 designs patterns formalisés par GoF en 1994 ■ Ce sont des patrons de conception, comme les plans d'un architecte ■ Ce sont des idées abstraites de comment résoudre un problème récurrent ■ Ce sont de bonnes pratiques documentées
  • 5.
  • 6. Pourquoi les utiliser ? ■ Accélérer le développement ■ Anticiper des problématiques ■ Améliorer la lisibilité du code ■ Utiliser un vocabulaire commun ■ Rendre le code plus maintenable : ouvert à l'extension et fermé à la modification
  • 7. La classification Patterns de Structure • Expliquent comment assembler des objets et des classes en de plus grandes structures, tout en les gardant flexibles et efficaces Patterns de Création • Fournissent des mécanismes de création d'objets, ce qui augmente la flexibilité et la réutilisation du code Patterns de Comportement • Mettent en place une communication efficace et répartissent les responsabilités entre les objets
  • 9. Le pattern Observer fonctionne comme un abonnement à un magazine 1. Un éditeur se lance dans les affaires et commence à diffuser des journaux. 2. Vous souscrivez un abonnement. Chaque fois qu’il y a une nouvelle édition, vous la recevez. Tant que vous êtes abonné, vous recevez de nouveaux journaux. 3. Quand vous ne voulez plus de journaux, vous résiliez votre abonnement. On cesse alors de vous les livrer. 4. Tant que l’éditeur reste en activité, les particuliers, les hôtels, les compagnies aériennes, etc., ne cessent de s’abonner et de se désabonner.
  • 10.
  • 11. Définition Le pattern Observer définit une dépendance du type 1 à plusieurs entre des objets de manière que, quand un objet (le sujet) change d'état, tous les objets dépendants en soient notifiés afin de pouvoir réagir conformément.
  • 12. Les objets clés du pattern Observer • Hérite de la classe abstraite Observable • Stocke une liste d'observateurs • Stocke un état dont dépendentles observateurs • Envoie une notification à ses observateursquand cet état change Le Sujet • Implémente l'interfaceObserver • Garde une référence au sujet • Stocke l'état du sujet qui doit être toujours à jour L'Observateur
  • 13. Push vs Pull : 2 implémentations Push permet d'envoyer toutes les informations du sujet vers les observateurs via un paramètre dans la méthode update() Pull notifie simplement les observateurs et les laisse demander les informations dont ils ont besoin grâce aux méthodes publiques du sujet
  • 14. Quand l'utiliser ? Utilisez le patron de conception Observer quand des modifications de l’état d’un objet peuvent en impacter d’autres, et que l’ensemble des objets n’est pas connu à l’avance ou qu’il change dynamiquement.
  • 15. Avantages •Modulable : Le pattern Observer permet de varier les sujets et les observateurs indépendamment. On peut réutiliser les sujets sans les mêmes observateurs et vis-versa. Un observateur peut également suivre plusieurs sujets •Maintenable : Il est possible d'ajouter des observateurs sans modifier le sujet, ni les autres observateurs •Faiblement couplé : Le sujet n'a pas besoin de connaître la classe concrète de ses observateurs, elle a juste besoin de savoir qu'ils implémentent l'interface Observer Inconvénients •Le risque qu'on peut rencontrer est d'engendrer une cascade d'update des observateurs au moindre changement du sujet •On ne peut pas choisir l'ordre dans lequel les observateurs sont notifiés •Il faut bien penser, en cas de suppression du sujet, à supprimer les observateurs de la liste pour qu'ils cessent de suivre son état
  • 21. Les implémentations des Observateurs
  • 22. Le client – Output
  • 23. COMPARAISON AVEC LE PATTERN PUBLISHER / SUSCRIBER Catégorie : Comportement
  • 24. Présentation Le pattern Publisher / Suscriber est relativement similaire au pattern Observer, à la différence qu'il n'y a pas d'abonnement direct entre les Publishers et les Suscribers. Le publisher et le suscriber ne se connaissent pas l'un l'autre. A la place, ils ont un lien avec un 3e composant, appelé broker, message broker ou event bus qui s'occupe de filtrer les messages des publishers et de les distribuer aux suscribers intéressés. Il existe plusieurs façons de filtrer les messages, les plus connues étant Topic-based et Content-based. On peut considérer le pattern pub sub comme une variation du pattern Observer, de par la similarité de leur concept.
  • 25.
  • 26. Différences Observer • Les observateursont une référence au sujet, et le sujet stocke une liste d'observateurs • Couplage plus fort • Synchrone • Architecture single-application address space : tout se passe dans la même application Publisher / Subscriber • Les publishers et suscribersne se connaissentpas les uns les autres, ils communiquentsimplement à l'aide de messages queues ou brokers • Couplage plus faible • Asynchroneavec une message queue • Architecturecross-application : dialogue entre plusieurs applications
  • 27.
  • 28. Sources ■ Design patterns - Tête la première ■ Refactoring.Guru ■ Tekcollab.imdeo ■ JavaScript Design Pattern (EN) ■ 5 TypeScript Design Patterns You Should Know
  • 29. En résumé ■ Les Design Patterns sont des patrons de conception communs à tous les langages de programmation ■ Le Javascript est un langage évènementiel basé sur le principe d'Observer / Observable (addEventListener) ■ Le pattern Observer fonctionne comme un abonnement à un magazine ■ Le pattern Pub / Sub ressemble à Observer mais s'utilise dans les architectures distribuées ■ Pub / Sub utilise un broker pour répartir les messages envoyés par le publisher dans la bonne queue à laquelle sera inscrite le suscriber