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)