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 :

Créer son propre listener


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Par défaut Créer son propre listener
    Bonjour à tous,
    J'ai un petit soucis de compréhension sur l'implémentation de son propre listener, j'ai bien sûr lu le cours de Romain Vimont dans les tutoriels.
    A travers l'architecture MVC, il met en oeuvre le design pattern Observer à travers son exemple sur la météo. Le principe est que le modèle peut agir sur la vue sans que ces deux éléments se connaissent pas.
    Ce que je ne comprends pas, dans son exemple sur la météo, dans la classe qui contrôle la vue, c'est qu'il déclare un objet météo, et de ce fait qu'il ajoute cet objet aux écouteurs par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    meteo.addTemperatureListener(this)
    Le principe de ce pattern n'est pas justement de ne pas déclarer d'objet concernant le modèle dans la classe contrôlant la vue ??

    Je ne sais pas si je suis très clair ...

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Je suppose qu'il s'agit de ce tutoriel : Créer ses propres listeners en java

    Mais je n'y retrouve pas le code que tu indiques

    Citation Envoyé par womannosky Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    meteo.addTemperatureListener(this)
    Le principe de ce pattern n'est pas justement de ne pas déclarer d'objet concernant le modèle dans la classe contrôlant la vue ??
    Oui et non : le principe est surtout de ne pas les lier "fortement".
    Il n'est pas rare que le modèle soit intégré dans la vue pour des raisons de simplification. Après tout la vue a besoin du modèle.


    Le principal à mon avis étant de bien séparé les deux du point de vue logique :
    Ici la classe Meteo utilise des TemperatureListener et c'est tout. Elle n'a que faire du type réel et de la manière dont seront utilisé les données.

    Ainsi si demain tu as besoin de surveiller la météo dans une autre classes quelconque, tu pourras le faire simplement en implémentant un nouveau listener...


    a++

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Je suppose qu'il s'agit de ce tutoriel : Créer ses propres listeners en java
    C'est bien de ce tutoriel oui.

    Ok, je vois. C'est juste pour rendre les classes les plus indépendantes possibles.

    Donc, si l'on crée un objet Vue, on aura toujours besoin de lui passer en paramètre de son constructeur l'objet modèle ?
    Ca créé un peu le bordel dans la classe qui gère la Vue aussi, non ?

    Merci pour ta réponse.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 744
    Par défaut
    Le pattern observer définit un modèle/sujet unique et des observateurs/Views qui vont se déclarer d'une façon ou d'une autre au modèle pour que les mises à jour soient propagées.

    Les variations sont dans le "d'une façon ou d'une autre", est ce que le sujet 'pousse' les mises à jour (et comment on interface les "Views" avec le modèle) ou est-ce que la View tire les mises à jour (et comment s'interfacent les Views avec le modèle).

    Sans que "View" et "Modèle" aient une connaissance "forte" de leurs structures internes respectives, il faut bien qu'ils coopèrent pour transférer les nouvelles valeurs (ce qui a changé et motive la mise à jour des Views).

    Le tutoriel (me) semble proposer une méthode "pousser" avec l'utilisation de la classe EventListener qui facilite l'interfaçage entre Views et Modèle.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Par défaut
    Façon élégante de répondre à ma question par oui.
    Mais dans ce cas, ça créé un peu le bazard dans la classe qui gère la Vue...

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par womannosky Voir le message
    Mais dans ce cas, ça créé un peu le bazard dans la classe qui gère la Vue...
    Pourquoi ?


    a++

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Par défaut
    Je te donne un exemple qui peut engendrer un certain bazard dans le code.
    Si jamais ton modèle est géré par plusieurs classes, ce qui est souvent le cas je présume. Tu crées tes objets qui gèrent le Modèle dans ton main, tu dois tous les passer en argument dans ton constructeur de la classe qui gère la Vue (par exemple une JFrame) si jamais ils ont tous besoin d'être modifiés.
    Par exemple, pour un Jeu de dames, imaginons le Modèle géré par une classe Damier, une classe ListeDesCoupsJoues..., quand tu réinitialises la partie (ton damier à l'écran) à l'aide d'un bouton, la Vue a besoin de connaitre un objet Damier, un objet ListeDesCoupsJoues... pour les réinitialiser.

    Que se passe-t-il si le modèle est géré par 5 ou 6 classes ? Il faut passer les 5 ou 6 objets dans le constructeur de la classe qui gère la Vue ?
    C'est la seule solution que je vois, ou alors, pense-tu que l'architecture de l'application est mal faite au départ ?

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

Discussions similaires

  1. Créer son propre système de fichiers
    Par L'immortel dans le forum Programmation d'OS
    Réponses: 15
    Dernier message: 15/12/2013, 22h16
  2. Créer son propre MessageDlg
    Par snoop94 dans le forum Langage
    Réponses: 4
    Dernier message: 21/11/2005, 18h14
  3. Créer son propre éditeur pour un descendant de tpopupmenu
    Par sfpx dans le forum Composants VCL
    Réponses: 1
    Dernier message: 04/10/2005, 12h21
  4. Créer son propre LayoutManager
    Par tomburn dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 17/03/2005, 16h15
  5. créer son propre protocole
    Par matthew_a_peri dans le forum Développement
    Réponses: 11
    Dernier message: 04/03/2005, 14h16

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