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

Design Patterns Discussion :

Différence entre fabrique abstraite et fabrique [Fabrique Abstraite]


Sujet :

Design Patterns

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut Différence entre fabrique abstraite et fabrique
    Bonjour,

    Après avoir vu le fonctionnement des design patterns factory et abstract factory, je n'arrive pas à comprendre ce qu'apporte l'abstract factory.

    J'ai fait pas mal de recherches et ai comparé des codes d'exemple (dispo ici dans headfirst\factory\pizzafm et pizzaaf : http://headfirstlabs.com/books/hfdp/...code102507.zip), mais ca ne répond pas à ma question... puisqu'a l'utilisation les 2 sont identiques.

    J'ai un peu l'impression que l'abstract factory complexifie le code et n'apporte rien

    Quelque chose doit m'échapper...

  2. #2
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Une fabrique abstraite ("abstract factory") sert à créer une famille d'objet.

    Par exemple, pour une fabrique d'objet graphiques, tu peux avoir à créer des boutons, des widgets quelconques, des fenêtres etc pour différents systèmes de fenêtrage. Et bien tu auras une fabrique (concrète cette fois-ci) par système (ex : Motif, MS-Windows, Mac OS, ...). Chacune des ces fabriques pourra créer les widgets de la famille adéquate.

    Par ailleurs, "factory" n'est pas un nom de design pattern, tu dois parler de "factory method" (méthode de fabrication ou création), qui comme son nom l'indique, consiste à créer un objet via un objet tiers. Une fabrique abstraite utilise généralement des méthodes de fabrication !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    Merci pour cette réponse

    Effectivement, je parlais de factory method .

    J'ai compris que la factory method était utilisée par l'abstract factory.

    Tu voudrais dire que la différence entre la factory method et l'abstract factory,
    est que l'abstract factory instancie plusieurs objets en une seule fois, au lieu d'un seul pour la factory method ?

  4. #4
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Tu voudrais dire que la différence entre la factory method et l'abstract factory,
    est que l'abstract factory instancie plusieurs objets en une seule fois, au lieu d'un seul pour la factory method ?
    C'est même plus fort que cela : une fabrique abstraite fabrique des objets ayant une relation forte (par exemple des widgets Win32, tandis qu'une autre implémentation fabriquera des widgets Mac OS).

    Ces deux patterns sont des patterns de création.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    Patriarch24, je crois que tu as éclairé ma lanterne

    Donc si j'ai bien compris:
    La factory method permet de déporter la création d'objets dans une autre classe, dédiée.
    L'abstract factory utilise une ou plusieurs factory method pour créer un objet plus complexe, composé d'autres objets.

    En reprenant le cours de JMDoudoux, dans les diagrammes de classe de ces 2 patterns les 2 classes 'client' ne sont donc pas les mêmes. Pour la methode frabrique, client correspond à la classe instanciée à l'execution du programme (d'ou le main) tandis que pour la fabrique abstraite, client est la classe instanciée, composée de 2 objets produitB et produitA .

    Si quelqu'un pouvais me confirmer que je n'ai rien manqué d'important...

    Merci

  6. #6
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    L'abstract factory utilise une ou plusieurs factory method pour créer un objet plus complexe, composé d'autres objets.
    Pas forcément. Ce que tu décris est un Monteur, qui lui est spécialisé dans la construction d'objet composé. Une Fabrique Abstraite construit des objets liés, mais pas forcément constituant un objet composé.

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

Discussions similaires

  1. [Fabrique Abstraite] L'utilisation d'une ORM rend il la fabrique abstraite inutile?
    Par 3logy dans le forum Design Patterns
    Réponses: 3
    Dernier message: 21/05/2014, 11h08
  2. différence entre interface et classe abstraite
    Par yacin87 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 29/03/2010, 11h36
  3. Différence entre inteface et classe abstraite
    Par dtavan dans le forum Diagrammes de Classes
    Réponses: 7
    Dernier message: 07/08/2009, 00h35
  4. [GOF] Fabrique abstraite peut-elle être un Singleton ?
    Par manel007 dans le forum Design Patterns
    Réponses: 7
    Dernier message: 06/01/2005, 10h02
  5. [GOF] [Fabrique Abstraite] [Pont] Questions ?
    Par manel007 dans le forum Design Patterns
    Réponses: 5
    Dernier message: 04/01/2005, 20h18

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