Je pense que vous avez entendu parler de message/manifestation des bus, c'est le seul endroit lors de tous les événements dans le système de flux. Architectures similaires sont trouvés dans l'ordinateur des cartes mères et des réseaux LAN. C'est une bonne approche pour les cartes mères et cartes réseaux, car elle réduit le nombre de fils, mais c'est bon pour le développement de logiciel? Nous n'avons pas de telles restrictions que l'électronique n'.
L'implémentation la plus simple de bus de message/event bus-comme:
class EventBus {
void addListener(EventBusListener l}{...}
void fireEvent(Event e) {...}
}
L'annonce d'événements est fait avec le bus.fireEvent(événement), la réception des messages est activé par bus.addListener(auditeur). Ces architectures sont parfois utilisées à des fins de développement de logiciels, par exemple MVP4G implémente message similaire bus pour GWT, lire:
- http://code.google.com/p/mvp4g/wiki/EventBus
- http://code.google.com/p/simpleeventbus/
- https://eventbus.dev.java.net/
- http://java.sun.com/products/archive/javabeans/infobus/downloads.html
C'est juste le populaire Observateur (Auditeur) motif de 'globalement' - chaque objet dans le système peut écouter à chaque message, et je pense que c'est dommage, il rompt le principe d'Encapsulation (chaque objet sait tout) et le principe de Responsabilité Unique (par exemple, quand un objet doit un nouveau type de message, événement bus a souvent besoin d'être changé, par exemple pour ajouter un nouveau port d'écoute de la classe ou d'une nouvelle méthode dans la classe Écouteur).
Pour ces raisons, je pense, que pour la plupart des logiciels, modèle Observateur est mieux que le bus d'événement. Que pensez-vous de l'événement de bus, sera-t-elle le bon sens pour les applications typiques?
EDIT: je ne parle pas des "grands" de l'entreprise des solutions, comme ESB - ils peuvent être utiles (ce qui est plus ESB offre beaucoup, beaucoup plus que seulement un événement de bus). Je pose la question sur l'utilité de l'aide de bus de message dans "régulier" de code Java pour objet à objet de connexion - certaines personnes le font, vérifiez les liens ci-dessus. Événement de bus est probablement la meilleure solution pour téléphone-pour-la communication téléphonique ou d'un ordinateur à ordinateur de la communication parce que chaque téléphone (ou l'ordinateur) dans un réseau peut généralement de parler les uns aux autres, de bus et réduit le nombre de fils. Mais des objets rarement parler les uns aux autres - combien de collaborateurs un objet peut avoir - 3, 5?