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 :

[POO] Modèle MVC et appel de controller


Sujet :

MVC

  1. #1
    Membre averti Avatar de sourivore
    Homme Profil pro
    Lead Tech Front-End
    Inscrit en
    Juin 2005
    Messages
    451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lead Tech Front-End

    Informations forums :
    Inscription : Juin 2005
    Messages : 451
    Points : 334
    Points
    334
    Par défaut [POO] Modèle MVC et appel de controller
    Bonjour,

    Voici mon problème :

    J'ai deux controller qui possèdent un certain nombre de méthodes.
    Il se trouve que dans chacun de ces controller, il existe plusieurs méthodes qui nécessitent à la fin d'initialiser un certain nombre de boutons.

    Ô grands sages, savez-vous quelle est la bonne façon de faire :
    - Créer la méthode initBoutons dans chacun de ces controller malgrès la complexité de la méthode ainsi que l'obligation de maintenir ce code a deux endroits différents.
    - Créer la méthode dans l'un des controller et appeler ce controller à partir de l'autre. Mais est-ce vraiment MVC tout ça?
    - Créer un troisième controller et faire appel à celui-ci depuis les deux autres controller. Méhessehemvéssésahossi ?
    - Créer une classe statique avec cette méthode. Mais ça parait bizarre (à moi en tout cas)
    - Injecter un controller dans un autre... Non je plaisante c'était une blague celle-là...
    - Une autre solution à laquelle mon petit cerveau n'aurait pas pensé.

    Merci de votre aide (et de votre compassion... Amen!)
    Toi aussi, crée ton armée de soldat de plomb :
    http://souris-bleues.minitroopers.fr/

  2. #2
    Membre confirmé
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Points : 575
    Points
    575
    Par défaut
    je ne suis ni sage ni confirmé. Mais :

    Dupliquer du code c'est rarement nécessaire. qui plus est cela démontre qu'on dispose d'une entité fonctionnelle objective.

    Ces boutons ne peuvent-ils pas être considérés comme un sous-contrôleur au service de multiple master-contrôleur ?

    Par rapport au MVC les boutons sont des éléments graphique ils participent nativement de la vue et non pas du contrôleur. Les méthodes appelées par ces boutons sont régulièrement appelées par d'autre éléments (Souris/ Raccourci clavier/Programme) elles se retrouvent dans le contrôleur

  3. #3
    Membre averti Avatar de sourivore
    Homme Profil pro
    Lead Tech Front-End
    Inscrit en
    Juin 2005
    Messages
    451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lead Tech Front-End

    Informations forums :
    Inscription : Juin 2005
    Messages : 451
    Points : 334
    Points
    334
    Par défaut
    Merci de ta réponse.

    Ces boutons ne peuvent-ils pas être considérés comme un sous-contrôleur au service de multiple master-contrôleur ?
    Tu veux dire par là qu'il faut un troisième controller ? Du point de vue de mon architecture ce controller a tout à fait sa place et n'est pas un "controller pansement". J'ai pensé en priorité à cette solution mais ce qui me choque c'est d'appeler un controller à partir d'un autre.
    Je sais pas si c'est très réglo en MVC.
    A moins que tu ne penses à faire de ce troisième controller une classe parente des deux autres (ce qui peut sembler logique car si les deux controller ont besoin de la même méthode c'est qu'ils partagent un lien logique entre eux)

    Par rapport au MVC les boutons sont des éléments graphique ils participent nativement de la vue et non pas du contrôleur. Les méthodes appelées par ces boutons sont régulièrement appelées par d'autre éléments (Souris/ Raccourci clavier/Programme) elles se retrouvent dans le contrôleur
    Je le conçoit totallement. Mon exemple est peut être mal choisi. En fait les boutons ne sont pas des boutons au sens propre du terme mais plutôt un objet bouton qui me sert pour la suite... Si ça te défrises (à moins que tu n'aies déjà les cheveux frisés), tu peux remplacer "bouton" par "objet"

    Merci en tout cas pour ta réponse.
    Toi aussi, crée ton armée de soldat de plomb :
    http://souris-bleues.minitroopers.fr/

  4. #4
    Membre confirmé
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Points : 575
    Points
    575
    Par défaut
    pour moi, en java, un sous-controleur n'hérite pas mais partage une interface commune avec des master-controleur.

    pour ce qui concerne de la problématique capilaire cela ne change rien le bouton ou l'objet bouton appartient à la vue.

    j'évite en général de coupler un bouton avec une action. Je préfère insérer une interface entre les deux.

  5. #5
    Membre averti Avatar de sourivore
    Homme Profil pro
    Lead Tech Front-End
    Inscrit en
    Juin 2005
    Messages
    451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lead Tech Front-End

    Informations forums :
    Inscription : Juin 2005
    Messages : 451
    Points : 334
    Points
    334
    Par défaut
    Ok. Merci pour ta réponse.

    Toutefois tu es encore trop trompé par le terme "bouton", ceci aurait pu être un objet "Personne" c'est un objet métier et pas un objet de l'IHM, il n'appartient donc pas à la vue.
    Toi aussi, crée ton armée de soldat de plomb :
    http://souris-bleues.minitroopers.fr/

  6. #6
    Membre confirmé
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Points : 575
    Points
    575
    Par défaut
    Ne coupe pas les cheveux en quatre , peux-tu préciser ton contexte ?

  7. #7
    Membre averti Avatar de sourivore
    Homme Profil pro
    Lead Tech Front-End
    Inscrit en
    Juin 2005
    Messages
    451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lead Tech Front-End

    Informations forums :
    Inscription : Juin 2005
    Messages : 451
    Points : 334
    Points
    334
    Par défaut
    On créé des objets métier Boutons qui sont ensuite transmis à une autre application par WebService afin de déterminer quels boutons sont visibles dans la GED.
    Mais bon il est vrai que c'est un peu capillotracté...
    Toi aussi, crée ton armée de soldat de plomb :
    http://souris-bleues.minitroopers.fr/

  8. #8
    Membre confirmé
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Points : 575
    Points
    575
    Par défaut
    Désolé mais je ne fréquente pas ce genre de salon de torture.

  9. #9
    Membre averti Avatar de sourivore
    Homme Profil pro
    Lead Tech Front-End
    Inscrit en
    Juin 2005
    Messages
    451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lead Tech Front-End

    Informations forums :
    Inscription : Juin 2005
    Messages : 451
    Points : 334
    Points
    334
    Par défaut
    Tu sais en SSII on développe pas forcément ce qu'on veut...
    Mais effectivement j'en connais pas mal dans mes hiérarchies qui sont des vraies tourtes (osais-je dire "quiches")
    Toi aussi, crée ton armée de soldat de plomb :
    http://souris-bleues.minitroopers.fr/

  10. #10
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    J'ai pensé en priorité à cette solution mais ce qui me choque c'est d'appeler un controller à partir d'un autre.
    Je sais pas si c'est très réglo en MVC.

    A priori un controleur qui dépend d'un controleur ou une vue qui dépend d'une vue, c'est la même couche pas de problème, là ou cela varie le plus c'est les sens des dépendances entre les autres couches comme vue->modèle, modèle->vue, ...


    MVC est une conception général elle parle au niveau de l'architecture mais pas de la conception interne qui est la conception détaillée des 3 couches c'est à dire des packages et des classes en java en justifiant quand c'est
    possible le choix du design


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    
    //class de la couche Vue n'est-ce pas
    class Vue extends JFrame
    {
    //super contructeur
    public Vue() 
    { 
       super();
    
    }
    
    //méthode pour un clic bouton en java
    public void actionPerformed(ActionEvent ae)
    {
       //si c'est un événement du bouton
       if(ae.getSource()=MonBoutonX)
       {
    
    //ici le choix s'oriente vers un couplage(une dépendance) vue->controleur
    
       //s'il le clic sur le bouton doit faire une addition
       //la vue ne sait pas faire (pattern  expert)
       //il faut déléguer (pattern stratégie)au controleur dans cette partie de      //code tout
       //ce qui n'a rien à voir avec la vue
         
         ControlerX controlerX = new ControlerX();
         controleur.actionneX();
         DevientVisible();
       }
    }
    
    //quelques méthodes de mise en forme et d'affichage
    public void devientInvisible()
    {
       setVisible(false);
    }
    
    public void devientvisible()
    {
       setVisible(true);
    }
    
    
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    //class de la couche controleur qui est l'expert pour l'action X
    class ControlerX implements InterfaceX
    {
       public void actionneX(JFrame fen)
       {
            //avec une dépendance controleur>vue on peut écrire rapidemment
            //avec une petit averto à la compilation pour le typage
            (Vue)fen.devientInvisible();
    
            int ca = 10*1': // en passe en mode las vegas écran...
           //ou alors on délégue à un autre objet mais de la couche métier
          //avec une dépendance controleur->metier
           
           //ActionBoutonX actBoutonX = new ActionBoutonX();
           //actBoutonX.RealiseAction();
            //if(ret *ca > 10)
                //(Vue)fen.DevientVisible();               
       }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    InterfaceX
    {
      public void actionneX();
    }

    Ce qui varie c'est la conception interne et les technologies(tu utilises lesquelles?), dans cet essai la vue n'est ni un composite ni un observable(pattern de conception), le contrôleur n'est pas un observateur et le modèle n'est pas un observable puis tout les motifs dans la couche modèle ce qui est énorme mais la c'est plus interne c'est profond.


    est-ce que tu as déjà codé quelques choses à nous présenter succintement, un diagramme, un bout de code ?
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

Discussions similaires

  1. Utilisation de User Control dans le modèle MVC
    Par Subteranea dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/02/2013, 10h31
  2. la partie controle du modèle MVC
    Par othaymine dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 06/05/2011, 14h52
  3. Réponses: 6
    Dernier message: 05/11/2008, 13h06
  4. [MVC/Organisation] Séparer le Modèle/Métier de la Vue/Controller
    Par Wookai dans le forum Développement Web en Java
    Réponses: 5
    Dernier message: 25/06/2007, 11h03
  5. Architecture J2EE et modèle MVC
    Par alexd dans le forum Développement Web en Java
    Réponses: 4
    Dernier message: 23/02/2005, 15h59

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