La logique, peut être. Swing, non.
Le contrôleur - qui est plutôt un écouteur chez swing (Listener) - connaît le contrat (l'interface) que comprend la vue pour alerter d'un événement. La différence
listener / contrôleur est importante, parce que la plupart du temps les listeners ne doivent pas modifier ce qu'ils écoutent.
Tu as des tas d'infos très précieuses sur tout ça dans
Writing Event Listeners.
Par exemple, soit le plus habituel des écouteurs, le ActionListener. Un contrôleur qui voudrait écouter un bouton va mettre en oeuvre cette interface. Par là, il dépend donc de la GUI, mais seulement au niveau du contrat ; il peut nommer son listener comme il le veut, lui faire faire ce qu'il veut, du moment qu'il implémente ActionListener.
Lorsque le bouton sera cliqué, le bouton consultera la liste de ses écouteurs, mais la seule chose qu'il sait d'eux est que ce sont des ActionListener. De cette façon, il pourra déclencher la méthode
actionPerformed. Qui est exactement cet ActionListener, que fait-il dans cette méthode, le bouton n'en sait rien (surtout que, la plupart du temps, le listener est une classe interne
package private).
Il y a donc, entre listener et vue, une dépendance au niveau du contrat, mais une indépendance au niveau de la mise en oeuvre.
Et ainsi de suite.
Partager