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

Java Discussion :

Listener sur class modèle


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Par défaut Listener sur class modèle
    Bonjour à tous,

    Je me demandais si je pouvais faire une écoute sur certaines classes de mon modèle afin de savoir quand leur constructeur est appelé?

    Je ne vois cependant pas trop comment m'y prendre car je n'ai aucune idée du type d'event qui sera déclenché.

    Quelqu'un peut m'en dire plus?

    Cordialement,

    Kihmé

  2. #2
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Par défaut
    Salut,

    J'avou que je saisi pas bien ton problème... Un listener s'applique sur un élément graphique, et t'associe une fonction en cas de changement de cet élément.
    Dans le cas d'un constructeur t'as juste à appeler ta fonction dedans...

    Bref si tu veux que la fonction toto() se déclenche quand tu construits l'objet tata, ben tu mets un appel à toto() dans le constructeur de tata...

  3. #3
    Membre très actif Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Par défaut
    Je cherche à détecter un changement dans mon modèle. Vu ta proposition de mettre un appel dans mon constructeur j'en déduis que tu as en fait compris ce que je souhaitais faire.

    Pourquoi je ne souhaite pas passer par un appel dans mon constructeur?

    Et bien car c'est un comportement que je souhaite implémenter pour un grand nombre de classe, pour faire ça proprement je souhaite rendre ce comportement sur une échelle plus globale.

    Du coup je me dis que peut être avec le pattern observer je peux arriver à quelque chose comme ça, non?

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Ton modèle, c'est un Modèle de quoi (de données, de JTable, d'avion)?
    Si tu n'expliques pas ton contexte, tu n'obtiendras probablement pas de réponse satisfaisante...

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Par défaut
    Bonjour,

    Est-ce que ce genre de choses répondrait à ton besoin ?

    1°) Faire une classe parente avec dans le constructeur, la fonction a appelé.
    2°) Toutes les autres classes devant avoir le même comportement héritent de celle ci-dessus.

    Code MaClasseParent.java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class MaClasseParent {
         // Constructeur
         public MaClasseParent() {
              maFonction();
         }
    }

    Code MaClasseFille.java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class MaClasseFille extends MaClasseParent {
         // Constructeur
         public MaClasseFille() {
              // Appel du constructeur de MaClasseParent
              super();
         }
    }

    En tout cas, je rejoins sinok, un peu plus d'explications pourrait aider les gens à comprendre ton problème.

    Mako.

  6. #6
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Salut,

    Tu peux peut etre redefinir le class loader. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class CustomClassLoader extends ClassLoader
    {
       public CustomClassLoader(ClassLoader parent)
       {
          super(parent);
       }
     
       @Override
       public Class<?> loadClass(String name) throws ClassNotFoundException
       {
          System.out.println("Loading " + name);
          return super.loadClass(name);
       }
    }
    Comme ca, tu pourras filtrer les classes chargées. Et pour utiliser ce class loader, il faut utiliser la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -Djava.system.class.loader=monappli.CustomClassLoader monappli.Appli

  7. #7
    Membre très actif Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Par défaut
    Désolé d'être trop flou, je reprend.

    Quand je dis modèle, j'entends mes classes métiers qui sont dans mon modèle (pattern MVC).

    Pour certaines classes je souhaiterais déclencher une sérialisation lorsque de nouvelles instances de celles ci sont faites.

    Effectivement il y a la possibilité de faire un appel d'une méthode gérant la sérialisation directement dans chacun des constructeurs mais je ne pense pas que ce soit la solution la plus propre et la plus maintenable.

    Ce que me propose Mako serait déjà plus propre.
    J'avais pensé à une sorte de listener pour détecter un changement dans les classes métiers comme dans le pattern "observer".

    Entre ces deux solutions, laquelle serait la plus judicieuse?

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/09/2009, 21h34
  2. Listener sur un bouton d'une autre classe
    Par toma03 dans le forum Débuter
    Réponses: 1
    Dernier message: 12/12/2008, 08h52
  3. Listener sur une classe "distante"
    Par delire8 dans le forum Général Java
    Réponses: 15
    Dernier message: 25/02/2008, 18h55
  4. Probleme Listener sur JSpinner ou dans class
    Par croc14 dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 28/03/2007, 09h37
  5. Listener sur un JPanel
    Par ptitelfe dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 27/03/2004, 13h14

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