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 :

Wrapper pour utiliser différentes librairie


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2013
    Messages : 4
    Par défaut Wrapper pour utiliser différentes librairie
    Bonjour, à tous.

    Sur mon projet Android actuel je suis amenée à devoir transformer des objets en Json et vice versa (pour utiliser des web services).
    Étant donnée qu'il existe plusieurs library permettant de parser du Json, je voulais pouvoir changer facilement de library. On m'a parler d’utiliser un wrapper afin de le faire facilement.
    J'ai réussit à en faire une première version, fonctionnel, basé sur un enum des libraries utilisables dans mon code puis un switch pour rediriger vers la méthode utilisant la library voulu.
    Cependant cette version est très "artisanale" dirons nous, et j'ai cru comprendre qu'une solution plus jolie existait notamment en utilisant des interfaces et de l'injection, c'est ici que je suis un peut perdu. Malgré mes recherches je ne suis pas arrivée à comprendre comment "construire" mon code.

    Pour essayer de mieux me faire comprendre, ce que j'ai, qui fonctionne artisanalement:
    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
     
    public class JSONWrapper {
    public enum Library {
    	Json, Jackson;
    }
    public JSONWrapper(Library lib) {
    	_lib = lib;
    }
    public final String ObjectToJSON(final Object object) {
    	Library lib = _lib;
    	String jsonStr = "";
    	switch (lib) {
    	case Jackson:
    		jsonStr = JSONFactory.ObjectToJSONbyJackson(object);
    		break;
     
    ...
    }
    et que j’appelle ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    JSONWrapper jsonFactory = new JSONWrapper(Library.Jackson);
    jsonOb = jsonFactory.ObjectToJSON(option);
    selon mes premières recherches, je devrais pouvoir construire qqch avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public interface ISerialiser{
    //méthodes
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class JacksonJsonSerializerWrapper implements ISerialiser{
    //Overide des méthodes
    }
    Ma question est comment structurer ce wrapper en utilisant les interfaces? pour l'instant dans mes recherches je n'ai pas réussie à trouver des informations me faisant avancer.

    Si vous aviez des pistes à me donner pour mes recherche merci d'avance.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par smailleux Voir le message
    Étant donnée qu'il existe plusieurs library permettant de parser du Json, je voulais pouvoir changer facilement de library.
    C'est d'une pertinence toute relative. Ces bibliothèques se valent. Une fois que tu en as trouvé une qui répond à ton besoin, tu auras bien peu de raisons d'en changer.
    Cela peut arriver bien sûr, mais changer n'est pas si difficile que ça au départ. Si tu maintiens un système de switch, ça te fera du travail tout le temps. Si tu n'en fais pas, tu n'auras de travail qu'au moment de changer.


    Citation Envoyé par smailleux Voir le message
    Ma question est comment structurer ce wrapper en utilisant les interfaces? pour l'instant dans mes recherches je n'ai pas réussie à trouver des informations me faisant avancer.
    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
    public interface JsonSerializer {
      String objectToJson(Object object);
    }
     
    public class JacksonJsonSerializer implements JsonSerializer {
     
      public String objectToJson(Object object) {
        return JSONFactory.ObjectToJSONbyJackson(object);
      }
     
    }
     
    public class MyProgram {
     
      private JsonSerializer jsonSerializer;
     
      private MyProgram(JsonSerializer jsonSerializer) {
        this.jsonSerializer = jsonSerializer;
      }
     
      private void doALotOfThings() {
        // plein de trucs
        jsonSerializer.objectToJson(someObject);
        // plein d'autres trucs
      }
     
      public static void main(String... args) {
        JsonSerializer jsonSerializer = new JacksonJsonSerializer();
     
        MyProgram program = new MyProgram(jsonSerializer);
        program.doALotOfThings();
      }
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2013
    Messages : 4
    Par défaut
    ok, merci thelvin, je vais tenter de construire qqch sur la base que tu m'as donné,
    je reviendrai pour plus d'informations ou pour clore la discutions.

  4. #4
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    ça ressemble beaucoup à un rôle à faire jouer à un ServiceLoader
    (mais je ne sais pas si c'est dispo sous Androïd - je ne connais rien dans ce domaine-)

Discussions similaires

  1. quel librairie pour utiliser stdin/fgetc ?
    Par burell dans le forum Bibliothèque standard
    Réponses: 2
    Dernier message: 06/03/2008, 10h53
  2. Réponses: 1
    Dernier message: 26/03/2007, 11h27
  3. librairie pour utiliser ofstream
    Par xiabolo86 dans le forum MFC
    Réponses: 1
    Dernier message: 06/01/2007, 11h52
  4. [XSLT] template unique pour 2 utilisations différentes
    Par sozie9372 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/04/2006, 15h24
  5. librairy pour utiliser DbgAssert
    Par dahoo dans le forum MFC
    Réponses: 1
    Dernier message: 04/11/2005, 13h45

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