Java RMI Y. Laborde Cours LOO - TOA
1
IMPLANTER LE PARADIGME MVC AVEC RMI
RAPPELS :
MVC en Java : L’API Java fournit une implémentation du paradigme MVC (Modèle Vues
Contrôleurs) dans le package java.util.
Ce package fournit :
- pour les modèles : la classe java.util.Observable,
- pour les vues : l’interface java.util.Observer.
Par ailleurs, les contrôleurs sont en partie cachés dans la JVM et leurs parties visibles sont
les {*}Listener liés aux traitements des évènements relatifs aux composants interactifs des
vues.
Le PROBLÈME du MVC en RMI :
Pour permettre aux vues de se mettre à jour d’un changement d’état du modèle, ce dernier
doit notifier tous les contrôleurs – enregistrés comme l’observant. Pour cela, il maintient
une liste de références de contrôleurs sous la forme d’Observer et leur envoie un message
update.
Or, dans un environnement RMI, cette communication « modèle vers contrôleurs » est de
type OD-client vers OD-serveur. Et ce sont les contrôleurs qui doivent être des OD-objets
(supportant une OD-méthode update).
Or, tout OD-objet doit implémenter l’interface Remote et, de plus, cette interface doit
être visible par l’OD-client au moment où il invoque une OD-méthode.
Mais avec l’implémentation MVC des modèles, cela n’est pas possible puisque ceux-ci
ne maintiennent une visibilité des contrôleurs qu’au travers de l’interface Observer
qui n’a pas la qualité Remote !
Une solution serait de faire en sorte que les contrôleurs implémentent à la fois Oberver et
Remote. L’OD-objet contrôleur serait donc bien un Remote mais comme le modèle ne le voit
que comme un Observer, la qualité Remote ne lui est toujours pas accessible !
Pour tenter de palier à ce problème, il faudrait faire en sorte que l’interface Observer hérite
de Remote mais cela n’est pas possible puisqu’elle est une interface de l’API Java.
La SOLUTION :
Deux solutions : (1) encapsuler ou (2) redéfinir l’implémentation MVC de Java au
travers de nouvelles classes et interfaces compatibles avec la technique RMI.