Les événements sont conçus pour découpler une zone d'une autre.
Cela implique parfois comportement asynchrone, qui peut être une fonctionnalité supplémentaire, mais n'est pas obligatoire. Par exemple, si vous souhaitez fournir une rétroaction rapide à l'utilisateur dans une interface graphique, et qu'une partie de votre code s'exécute trop lentement (sauf si elle doit être terminée avant de fournir des commentaires), l'appel normal peut exécuter des codes rapides et créer un événement pour les autres, puis fournir des commentaires de l'interface graphique sans attendre que l'événement soit réellement traité. Cet événement est stocké dans une file d'attente et un ou plusieurs threads traitent cette file d'attente à leur propre rythme.
Pour les événements synchrones, il est vraiment utile pour la communication inter-module, où les deux modules ne sont pas dépendants l'un de l'autre au moment de la compilation. Les deux peuvent connaître une classe d'événements, et un « routeur d'événement »:
- un module crée un événement et appelez le routeur,
- le routeur sait (de la configuration précédente) quel autre module devrait recevoir, et l'envoyer au module de réception.
Ni le module connaissent l'autre, donc le concept de découplage. Très bien si les deux doivent être maintenus séparément :-)
De nombreuses variantes existent, pour certains sujets tels que:
- diffusion vers plusieurs récepteurs
- fail-over (si le récepteur est temporairement arrêté, il recommence, l'événement sera délivré lorsque le récepteur sera en marche et enregistré à nouveau)
- audit: un module technique peut recevoir des événements ciblés à d'autres modules, et les connecter
- ...
Modification des objets de domaine via des événements semble un peu étrange. Le découplage mentionné plus haut est-il vraiment justifié? Cependant, je ne donnerais pas d'avis définitif avant de comprendre plus précisément ce que vous avez en tête.
Eh bien, j'apprends seulement sur ce site ... et oui, votre réponse a été utile, donc je vais l'upvote. Merci. –
Oui, j'ai vu ça sur ton profil. Nous avons tous besoin d'apprendre des choses de temps en temps :-) – KLE