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 :

[Stratégie][Factory]


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2004
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 30
    Points : 25
    Points
    25
    Par défaut [Stratégie][Factory]
    Bonjour,
    je me pose une question sur les factory ( fabrique d'objet )
    dabord doivent elles être obligatoirement du type singleton.
    Ensuite concrètement, à quoi elles servent, et pourquoi ne pas appeller
    directement le constructeur de l'objet ( si elle n'est pas du type singleton )

    merci d'avance

  2. #2
    duj
    duj est déconnecté
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2003
    Messages : 141
    Points : 474
    Points
    474
    Par défaut
    un bête petit exemple pourrait d'aider: ici, on choisit le type de la classe qu'on retourne selon un paramètre système (ficitf, bien entendu ici):


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Fenetre {
     
       public static Fenetre create(){
     
           if(System.francais) return new FrancaisFenetre();
           else return new DefaultFrenetre();
     
       }
    }
    Parfois, Google fait des miracles

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2004
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    Merci duj,

    mais je vois toujours pas trop l'utilité ...

  4. #4
    Nouveau membre du Club
    Inscrit en
    Janvier 2004
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    Par exemple :

    Mon application doit acceder à une base de donnée.
    Donc pour chaque table, j'ai une classe de mapping ( pojo )
    soit table personne -> PersonneDAO + PersonneFactoryDAO
    et PersonneFactoryDAO est du type singleton.
    Moi je m'adresse à la fabrique quand je veux un objet et finalement la fabrique elle me sert à quoi ?

    Contexte , je dois réaliser une grosse aplli web et suivre des recommandation tel que :
    -toujours passer par des fabrique type singleton
    -toujours passer par des interface
    -6 couches ...

    Alors je me demande l'interet de certain pattern


  5. #5
    duj
    duj est déconnecté
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2003
    Messages : 141
    Points : 474
    Points
    474
    Par défaut
    Typiquement dans ton cas, PersonneFactoryDAO serait implémenté comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class PersonneFactoryDAO  {
     
       public static PersonDAO create(){
     
           if(System.test) return new TestPersonDAO();
           elseif (oracle ) return new OraclePersonDAO();
           elseif (xml) return new XMLPersonDAO();
           ....
       }
    }
    ou autrement si tu fais un singleton, mais ds le même goût.

    Un des intérêt évident de ce pattern c'est que , si on décide de changer d'implémentation, et de faire un LDAPersonDAO, tu ne devra changer qu'un seule ligne.


    si tu n'avais pas fait ca, aurais du changer le par le partout dans ton code

    Tu vois mieux ?
    Parfois, Google fait des miracles

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2004
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    Oui merci ton explication est trés claire,
    l'interet est donc en terme de maitenance et d'évolutivité.

  7. #7
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    Est ce résolu ? un petit clic sur le tag...
    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java
    "La liberté de tout être s'arréte là où commence celle de l'autre... Respecter l'autre, c'est préserver sa liberté d'être, de penser et de vivre"

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

Discussions similaires

  1. [Stratégie] Limiter la bande passante
    Par Neuromancer dans le forum Développement
    Réponses: 7
    Dernier message: 17/01/2005, 15h29
  2. [Stratégie][Fichier][Memoire]Scan disques volumineux
    Par Mobaladje dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 22/05/2004, 19h06
  3. [Stratégie] Ant pour les tests en Java ?
    Par franckR dans le forum Tests et Performance
    Réponses: 5
    Dernier message: 08/03/2004, 09h38
  4. [Stratégie] Utiliser un systeme de bufferisation
    Par arnolanf dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 31/10/2002, 16h49
  5. [] [Stratégie] Comment créer un fichier log
    Par Skeezo dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 16/09/2002, 18h30

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