> Tech > Transmettre des messages entre objets Java

Transmettre des messages entre objets Java

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Il est souvent utile qu'un objet sache ce qu'un autre est en train de faire. Le moyen de communication le plus simple entre objets est d'envoyer et de recevoir des messages. Et le modèle d'événement de délégation de Java fournit exactement les moyens nécessaires pour créer un système de messagerie

Transmettre des messages entre objets Java

simple.Avec ce modèle,
un objet peut s’enregistrer comme un écouteur pour les
événements engendrés par un second objet. Quand le second objet
génère un événement, le premier en est informé.

J’ai utilisé le modèle d’événement de délégation pour créer un
MessageEvent (figure A) qui envoie des messages à  un objet qui
met en oeuvre un MessageListener (figure B). Un MessageEvent
est constitué d’un objet qui identifie l’origine du message, d’une
chaîne contenant le texte du message, et d’un entier facultatif qui
contient l’identification du message.
Pour envoyer des messages, un objet doit définir un
EventListenerList :

private EventListenerList listenerList =
    new EventListenerList();

L’envoyeur indique ensuite les méthodes pour ajouter et supprimer
des écouteurs :

public void addMessageListener(
   MessageListener listener) {
   listenerList.add(MessageListener.class, listener);
}
public void removeMessageListener(
   MessageListener listener) {
   listenerList.remove(MessageListener.class, listener);
}
L'envoyeur utilise la méthode MessageEvent fireMessageSent pour envoyer un message :
MessageEvent.fireMessageSent(
   listenerList,
   new MessageEvent(this, "Message text")
);

Pour recevoir des messages, un objet doit mettre en oeuvre
l'interface MessageListener :

public class Receiver extends JFrame
    implements MessageListener {

Le récepteur s'enregistre ensuite auprès de l'envoyeur comme
MessageListener :

sender.addMessageListener(
    (MessageListener) this);

Enfin, le récepteur définit la méthode messageSent requise par
l'interface MessageListener pour recevoir des messages :

public void messageSent(
   MessageEvent event) {
   if (event.getSource() == sender) {
      text = event.getMessage();
   }
}

Dans cet exemple,messageSent stocke les messages reçus de
l'envoyeur dans une chaîne de texte.
MessageEvents fournit un moyen simple pour transmettre des
informations d'état entre des objets , dans le même thread ou un
thread différent. Pour des exemples d'utilisation de
MessageEvents, voir l'application Archiver dans « Zip Files in Java
», novembre 2000.

Julian Monypenny

Téléchargez cette ressource

Préparer l’entreprise aux technologies interconnectées

Préparer l’entreprise aux technologies interconnectées

Avec la « quatrième révolution industrielle », les environnements hyperconnectés entraînent de nouveaux risques en matière de sécurité. Découvrez, dans ce guide Kaspersky, comment faire face à cette nouvelle ère de vulnérabilité.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010