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

Format d'échange (XML, JSON...) Java Discussion :

Etendre DefaultHandler


Sujet :

Format d'échange (XML, JSON...) Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 298
    Par défaut Etendre DefaultHandler
    Salut à tous,
    Dans les exemples de code qui implémentent un DefaultHandler personalisé SAX pour parser un flux XML, j'ai souvent vu ( livre sur Java, exemple de code source sur ce site )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    DefaultHandler handler = new PersonneHandler();
    .....
    Pourquoi ne pas écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PersonneHandler handler = new PersonneHandler();
    ça marche, et ça permet d'implémenter de nouvelles méthode dans la classe PersonneHandler(). Dans mon cas un getter, qui me permet de manipuler l'annuaire en dehors du handler :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
       /**
        * @return Returns the annuaire.
        */
       public List<Personne> getAnnuaire() {
       	return this.annuaire;
       }
    Est-ce qu'il y a une contre-indication à faire comme ça ? Un design pattern particulier, ou autre....
    merci à tous.

  2. #2
    Membre éprouvé Avatar de Xavinou
    Inscrit en
    Mai 2005
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 135
    Par défaut
    En fait il vaut mieux se poser la question inverse !
    Pourquoi manipuler un PersonalHandler alors que tu utilises les services décrits par un DefaultHandler ?

    En quelque sorte, manipuler un DefaultHandler permet de séparer dans ton code le service que tu utilises de son implémentation (réalisee par le PersonalHandler).

    C'est aussi vrai (et plus facile à comprendre) lorsque tu manipules des interfaces.

    Par exemple, il vaut mieux écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List list = new ArrayList()
    que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList list = new ArrayList()
    Si quelqu'un reprend ton code, il saura ainsi qu'il peut remplacer l'implémentation de la liste par une autre (et de la même manière il pourra remplacer ton PersonalHandler par AnotherPersonalHandler).

  3. #3
    Membre éprouvé Avatar de Xavinou
    Inscrit en
    Mai 2005
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 135
    Par défaut
    Bien entendu si tu utilises des méthodes spécifiques à PersonalHandler tu ne peux pas utiliser DefaultHandler, mais le couplage entre les deux classes est plus fort.

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 298
    Par défaut
    Citation Envoyé par Xavinou
    Bien entendu si tu utilises des méthodes spécifiques à PersonalHandler tu ne peux pas utiliser DefaultHandler
    Ok merci pour tes réponses.
    Je suis bien dans ce cas, donc je sui obligé d'utilisé : PersonalHandler.

    Citation Envoyé par Xavinou
    , mais le couplage entre les deux classes est plus fort.
    Que veux-tu dire par là ?

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 298
    Par défaut
    Ok, en fait je peux faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
             File fichier = new File("./ExempleSAX.xml");
             DefaultHandler gestionnaire = new PersonneHandler();
             parseur.parse(fichier, gestionnaire);
             List<Personne> a =  ((PersonneHandler) gestionnaire).getAnnuaire();
    ...

Discussions similaires

  1. [DTD] Tags Html dans XML ---> Etendre la dtd du Xhtml
    Par tipaquo dans le forum Valider
    Réponses: 14
    Dernier message: 19/07/2010, 09h09
  2. etendre une image de fond a toute une cellule
    Par Sylk dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 06/09/2005, 16h15
  3. [String]Comment etendre le mon Code ASCII??
    Par lanfeustdetroll dans le forum API standards et tierces
    Réponses: 24
    Dernier message: 25/07/2005, 14h42
  4. [heritage] etendre une classe interne en dehors du package
    Par ChristopheH dans le forum Langage
    Réponses: 2
    Dernier message: 11/10/2004, 14h15
  5. [langage] Etendre les noms de fichier DOS
    Par jmartin dans le forum Langage
    Réponses: 4
    Dernier message: 13/07/2004, 13h32

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