<aside> 📘

Mettre en place un mĂ©canisme de souscription pour envoyer des notifications Ă  plusieurs objets, au sujet d’évĂ©nements concernant les objets qu’ils observent.

</aside>

image.png

😟Problùme

Imaginez que vous avez deux types d’objets : un Client et un Magasin .

<aside> 🎯

Soit les clients perdent leur temps à venir vérifier la disponibilité des produits, soit le magasin gùche des ressources pour prévenir des clients qui ne sont pas concernés.

</aside>

Se rendre au magasin ou envoyer du spam.

Se rendre au magasin ou envoyer du spam.

🙂Solution

<aside> ✅

Ajouter un mĂ©canisme de souscription Ă  la classe diffuseur pour permettre aux objets individuels de s’inscrire ou se dĂ©sinscrire de ce diffuseur.

</aside>

Un mĂ©canisme de souscription qui permet aux objets individuels de s’inscrire aux notifications des Ă©vĂ©nements.

Un mĂ©canisme de souscription qui permet aux objets individuels de s’inscrire aux notifications des Ă©vĂ©nements.

Le diffuseur envoie des notifications aux souscripteurs en appelant la méthode de notification spécifique sur leurs objets.

Le diffuseur envoie des notifications aux souscripteurs en appelant la méthode de notification spécifique sur leurs objets.

Structure

image.png

  1. Le Diffuseur envoie des Ă©vĂ©nements intĂ©ressants Ă  d’autres objets. Ces Ă©vĂ©nements se produisent quand le diffuseur change d’état ou exĂ©cute certains comportements. Le diffuseur possĂšde une infrastructure d’inscription qui permet aux nouveaux souscripteurs de rejoindre la liste et aux souscripteurs actuels de la quitter.
  2. Quand un nouvel Ă©vĂ©nement survient, le diffuseur parcourt la liste d’inscriptions et appelle la mĂ©thode de notification dĂ©clarĂ©e dans l’interface des souscripteurs sur chaque objet souscripteur.
  3. L’interface Souscripteur dĂ©clare les mĂ©thodes de notification. Dans la majoritĂ© des cas, il n’y a qu’une seule mĂ©thode update. Elle peut prendre plusieurs paramĂštres pour que le diffuseur leur envoie plus de dĂ©tails concernant la modification.
  4. Les Souscripteurs Concrets exĂ©cutent certaines actions en rĂ©ponse aux notifications envoyĂ©es par le diffuseur. Toutes ces classes doivent implĂ©menter la mĂȘme interface pour ne pas coupler le diffuseur avec leurs classes concrĂštes.
  5. En gĂ©nĂ©ral, les souscripteurs ont besoin de dĂ©tails Ă  propos du contexte afin d’exĂ©cuter correctement la mise Ă  jour. C’est pour cela que les diffuseurs passent souvent des donnĂ©es du contexte en paramĂštre de la mĂ©thode de notification. Le diffuseur peut mĂȘme s’envoyer lui-mĂȘme en paramĂštre et laisser les souscripteurs rĂ©cupĂ©rer directement les donnĂ©es nĂ©cessaires.
  6. Le Client crée des objets diffuseur et Souscripteur séparément et inscrit les souscripteurs aux mises à jour du diffuseur.