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

MVC Discussion :

Tutorial Swing mvc de Baptiste Wicht


Sujet :

MVC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 61
    Par défaut
    Bonjour,

    Mes questions s'appuient sur le tutorial "implémentation du pattern mvc" réalisé par Baptiste Wicht

    Je me demande si le modèle était un objet et pas simplement un int si l'on ferait passer une copie de l'objet ou l'objet même ? Autre question, on dit que le mvc est une composition des patterns strategy observer et composite. Pour l'observer le composite je les vois sur l'exemple mais j'ai du mal à cerner les patterns strategy. Pourriez vous les faire apparaitre (Il me semble que pour un stratégy des interfaces permettent d'encapsuler ldes actions de modification du modèle)?

    Je cherche un exemple un peu complexe ou le mvc serait appliqué. D'autres questions viendront après celles là.


    Merci

    Je donne le lien du tutorial :

    http://baptiste-wicht.developpez.com...onception/mvc/

    Merci

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Bonjour,

    Pour ce qui est du pattern strategy, il s'agit en fait du contrôleur. Dans le MVC, on peut dire que le contrôleur est stratégie de la vue.

    Avec un contrôleur non générique, c'est assez difficile à percevoir. Mais en fait, comme en pratique, la vue ne connaît que la spécification du controlleur (son interface, en Java). On peut changer de manière transparente la logique de contrôle sans que la vue n'en soit impactée.

    Pour ce qui est du passage d'objet. En général, j'utilise 2 façons de faire :
    • Je passe directement l'objet à la vue
    • Je passe une liste d'informations que j'extrais depuis l'objet à la vue


    Mais dans le deux cas, ce n'est jamais la vue qui modifie directement l'objet. En général, la vue me renvoie ce que j'appelle un formbean (bean de fomulaire ?) qui contient les données de la vue et c'est ensuite le contrôleur qui va extraire, valider puis utiliser ces données pour mettre à jour l'objet.

    Pour ce qui est d'un exemple plus complexe, tu peux peut-être regarder les tutoriels de Serge Tahé, mais en général, il utilise un framework MVC (M2VC ou Spring MVC) pour construire son application.

    Voilà

  3. #3
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Salut,
    Je vais parler dans un contexte web plutôt que Swing. Dans ce cas, le pattern Strategy est mis en oeuvre dans la couche contrôle : t'as un contrôleur frontal qui intercepte les requêtes des vues, et selon quelques paramètres (url, champs dans la requête, etc.) ça invoque un sous controleur (qui respecte un format déterminée, que ce soit implémenter une interface, annotations ou même un simple pojo) qui lui va effectuer le traitement réel.

    Ca peut être vu donc de cette façon : le controleur frontal choisit la stratégie adéquate pour traiter une requête qu'il reçoit.

  4. #4
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 61
    Par défaut
    Merci pour vos réponses.

    Moi je trouve étrange que le contrôleur instancie la vue. Pourquoi ? Car l'un des intérêts principaux du pattern stratégie est de pouvoir justement changer de stratégie à la compilation.

    Le changement de stratégie "vue.setController(new Controleur(Model m))" n'est pas possible ou plutôt pas efficace car le contrôleur va instancier à nouveau une vue. J'aurais plutôt fait un "vue.setController(new Controleur(Model m), this)" pour changer de stratégie. Le contrôleur se chargerait de faire le lien entre le modèle et la vue dans son constructeur "m.addModelListener(vue)" et "vue.setModel(m)".

    Instancier les modèles et les vues puis le contrôleur par un new Controleur(vue, model) me semble plus logique. Encore une fois, c'est juste mon interprétation, je cherche en fait à trouver une interprétation idéale du mvc( en vision non Web,M2VC etc..). Le livre "Swing" publié chez eyrolles commençait bien mais il simplifie ensuite l'architecture mvc afin qu'elle ne s'adapte seulement à Swing.

    Vu le nombre de visions du message sur "l'interprétation idéale du mvc" à l'adresse http://www.developpez.net/forums/d80...hitecture-mvc/ , je pense que quelqu'un qui présenterait dans un livre ou un tutoriel architecture mvc idéale utilisant une base de données (avec un DAO ou un frameWork à la Hibernate) d'une application un peu complexe avec tous les niveaux d'abstractions nécessaires ferait un malheur.

    Quoi qu'il en soit le tutoriel cité plus haut est un bon point de départ.

  5. #5
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Dans la pratique, les instanciations ne vont pas se faire avec un tel couplage.

    Personnellement, mes vues/contrôleurs/modèles ne sont jamais accédés que par leurs interfaces et les implémentations sont injectés par Ioc ou un autre système équivalent.

  6. #6
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 61
    Par défaut
    Quand tu dis "dans la pratique" cela signifie en version Web M2VC ou en version "classique" ?

  7. #7
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par alatox Voir le message
    Quand tu dis "dans la pratique" cela signifie en version Web M2VC ou en version "classique" ?
    Les deux.

    Personnellement, je développe surtout sur des applications Desktop et j'utilise Spring pour injecter les différentes couches de mon application.

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/07/2011, 16h22
  2. Avis sur mon nouveau site : baptiste-wicht.developpez.com
    Par Baptiste Wicht dans le forum Mon site
    Réponses: 12
    Dernier message: 07/12/2009, 19h47
  3. [Swing] Création d'une interface graphique SWING + MVC
    Par Sylmandel dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/04/2006, 09h03

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