IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Patron MVC et modèles imbriqués


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Patron MVC et modèles imbriqués
    Bonjour,

    Je développe actuellement une application Java en me basant sur une architecture MVC, ou plus précisément M-VC : j'intègre la fonction du contrôleur à la vue.

    J'ai un premier modèle nommé StationModel, accompagné de sa vue StationView, de son écouteur StationListener et de plusieurs évènements.
    J'ai également un second modèle : BorneModel, avec de même BorneView et BorneListener.

    Une station est composée de plusieurs bornes.
    La vue de la station est censée afficher l'état des bornes en "temps réel".
    Je me trouve devant un problème de conception : lorsque, par exemple, un utilisateur passe une commande en agissant sur l'un des objets BorneView, j'aimerais que l'instance de StationView réagisse.

    J'ai énuméré 2 solutions qui pourraient fonctionner, mais je ne suis convaincu par aucune des 2 :
    • Premièrement, StationView pourrait implémenter BorneListener, ainsi lorsque BorneModel est averti de la commande par BorneView, il diffuse un nouvel évènement qui est détecté par StationView. Malheureusement je trouve ça vraiment sale, parce que la plupart des méthodes de BorneListener n'ont aucun besoin d'être implémentées dans StationView...
    • Deuxièmement, BorneView informe BorneModel de la commande, qui informe StationModel, qui diffuse un évènement, détecté par StationView. Le problème dans ce cas est que StationModel n'a vraiment pas besoin de savoir qu'il y a eu une commande. La méthode créée dans StationModel ne modifie pas le modèle et a pour seule utilité de diffuser un évènement...


    D'un côté, il est vrai qu'une borne appartient à la station, donc théoriquement, lorsqu'une borne est modifiée (dans notre cas, une commande est passée depuis la borne), la station est modifiée. Donc la deuxième solution n'est pas fausse selon moi. Le problème est qu'elle nécessite beaucoup de code pour pas grand chose.

    Alors, tout d'abord, y a-t'il une erreur de conception dans la deuxième solution ?
    Existe-t'il une méthode particulière pour concevoir une appli MVC avec des modèles "imbriqués" ?
    Sinon, voyez-vous une meilleure solution à mon problème ?

    Merci d'avance pour votre aide.

    Axel

  2. #2
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 144
    Par défaut
    Bonsoir,
    quand tu dits que tu veux faire une applic suivant le modele M-VC j'ai directement penser aux composants swing:
    si je comprends ton probleme peut-être pourrais-tu jouer sur les proprietes liees :
    chaque borne possede un objet propertychangesupport et a chaque appel pour faire une commande tu fais appel dans la metode a firepropertychange(...) qui va notifier le changement de propriete aux listeners ( station sera alors a faire enregistrer comme listener )
    Comme ca normalement tu ne dois pas faire des implementations d interfaces qui risquent d'etre incoherent.

    Voila si jamais j ai pas bien compris la question fais le moi savoir.
    j'espere que ca t'aidera

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour ta réponse.

    Je pense que tu as bien compris ma question, et si je comprends bien ta réponse, en fait tu me proposes de créer un 3e listener indépendant, dédié aux échange entre BorneModel et StationView ?
    (sachant que le premier listener : StationListener s'occupe de la liaison entre StationModel et StationView, et que le second, BorneListener s'occupe de celle entre BorneModel et BorneView)

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 144
    Par défaut
    tu n'as pas besoin de creer un 3e interface il faut implementer l'interface propertychangelistener qui va te donner les methodes a implementer.
    mais pour la station tu crees une methode addpropertychangelistener( propertychangelistener pcl){ tonObjetPropertyChangeSupport.addpropertychangelistener( pcl);}

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ah ok, ça m'a l'air pas mal ça !
    J'essayerai ça demain et je te tiens au courant.

    Merci !

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 144
    Par défaut
    ok je vais suivre la consersation
    Bon amusement
    et n'hesite pas a demander des infos complementaires

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 21/05/2014, 09h47
  2. Ouvrage sur MVC partie modèle
    Par mithrendil dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 16/07/2011, 12h03
  3. MVC et modèle : sql et xml
    Par NikOoLaaaAAAs dans le forum MVC
    Réponses: 2
    Dernier message: 29/09/2008, 04h50
  4. [Conception] MVC classe modèle
    Par snyfir dans le forum Langage
    Réponses: 1
    Dernier message: 23/05/2008, 14h24
  5. [MVC] Communication Modèle, Vue
    Par dahtah dans le forum MVC
    Réponses: 4
    Dernier message: 25/10/2007, 17h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo