Java pour l'informatique industrielle
Chapitre 1. Introduction aux objets
Chapitre 2. Les structures de contrôle
Chapitre 3. Unifier et réutiliser
Chapitre 4. Modèle, Vue et Contrôle
4.1. Motivation et fonctionnement
4.2. L'environnement graphique de Java
4.3. La gestion des événements
4.4. Cas d'étude 1 - sans notification
4.5. Cas d'étude 2 - avec notification
4.6. Nouveau modèle du compteur
4.6.1. Avec ou sans notification
4.6.2. Le pattern Décorateur
4.6.3. Le CompteurObservateur
4.6.4. Plusieurs écouteurs
Chapitre 5. Les entrées/sorties
Page d'accueilTable des matièresNiveau supérieurPage précédenteBas de la pagePage suivante

4.6.4. Plusieurs écouteurs

Le CompteurObservateur que nous venons de créer possède un seul écouteur. Pour le cas d'étude 2, il est nécessaire de posséder d'autant d'écouteurs que de vues. Il est facile de remédier à cela. La gestion des écouteurs est désormais concentrée uniquement sur la classe CompteurObservateur. Il suffit donc de la modifier sans toucher au reste pour ajouter cette nouvelle fonctionnalité.

1. class CompteurObservateur implements ICompteur { 2. 3. // Le constructeur et les méthodes getEtat et incrementer ne changent pas 4. 5. void notifie() { 6. for(ICompteurListener cl : ecouteurs) { 7. cl.miseAJour(); 8. } 9. } 10. 11. private ArrayList<ICompteurListener> ecouteurs = new ArrayList<ICompteurListener>(); 12. void addCompteurListener(ICompteurListener nouveau) { 13. this.ecouteurs.add(nouveau); 14. } 14. }

On peut remarquer l'utilisation particulière du bloc for aux lignes 6 à 8. Cette construction, introduite au JDK 1.5 permet de parcourir une collection sans accéder aux éléments par leur indice. Elle est équivalente à

for(int i=0; i < ecouteurs.size(); i++) { ICompteurListener cl = ecouteurs.get(i); cl.miseAJour(); }

CompteurObservateur (source)

Page d'accueilTable des matièresNiveau supérieurPage précédenteHaut de la pagePage suivante