Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
949 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  abstract factory et factory

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

abstract factory et factory

n°1835711
frenchtouc​co
Posté le 08-01-2009 à 17:12:02  profilanswer
 

Bonjour,
 
Quelle est la différence entre ces deux pattern ?
 
Dans quel cas utiliser l'un plutôt que l'autre, je m'en sors pas ...
 
Merci


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
mood
Publicité
Posté le 08-01-2009 à 17:12:02  profilanswer
 

n°1835716
Joel F
Real men use unique_ptr
Posté le 08-01-2009 à 17:22:14  profilanswer
 

De tete et en gros, la Factory file une interface pr creer des instances de classes avec une interface donnée via un ID.
L'AbstractFactory est une Factory que tu peut surclasser et dont le choix des objets à construire est déléguée aux classes filles. C'ets comme une factory à factory

n°1835720
frenchtouc​co
Posté le 08-01-2009 à 17:37:25  profilanswer
 

hum ok


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
n°1835776
Taz
bisounours-codeur
Posté le 08-01-2009 à 19:29:35  profilanswer
 

google sans déconner

n°1835812
frenchtouc​co
Posté le 08-01-2009 à 22:05:47  profilanswer
 

je trouvais rien de très appétissant. Il y a un nombre assez conséquent de personnes qui savent présenter ces patterns d'une manière incompréhensible...


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
n°1835817
Elmoricq
Modérateur
Posté le 08-01-2009 à 22:34:26  profilanswer
 

Je trouve que wikipedia s'en sort bien.
Factory : http://en.wikipedia.org/wiki/Factory_method_pattern
Abstract Factory : http://en.wikipedia.org/wiki/Abstract_factory_pattern

n°1835819
frenchtouc​co
Posté le 08-01-2009 à 23:09:57  profilanswer
 

et t'arrives à comprendre la différence d'une manière clair et limpide rien qu'en lisant ces articles ? t'as pas des questions qui te reste du style , on peut pas faire avec le premier pattern ce qu'on fait avec le deuxième pattern ?


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
n°1835820
frenchtouc​co
Posté le 08-01-2009 à 23:22:11  profilanswer
 

bon enfin c'est vrai que ça à l'air pas mal, je vais méditer un peu dessus
 
EDIT : ué bon finalement c vraiment juste ce que disais Joel F ok ok


Message édité par frenchtoucco le 08-01-2009 à 23:33:12

---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
n°1835864
Taz
bisounours-codeur
Posté le 09-01-2009 à 10:47:05  profilanswer
 

frenchtoucco a écrit :

et t'arrives à comprendre la différence d'une manière clair et limpide rien qu'en lisant ces articles ? t'as pas des questions qui te reste du style , on peut pas faire avec le premier pattern ce qu'on fait avec le deuxième pattern ?


Bah c'est de la branlette de nouille de DP, comme d'habitude.

n°1835925
frenchtouc​co
Posté le 09-01-2009 à 12:43:50  profilanswer
 

cash


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
mood
Publicité
Posté le 09-01-2009 à 12:43:50  profilanswer
 

n°1882171
Glock 17Pr​o
Posté le 08-05-2009 à 15:48:33  profilanswer
 
n°1882219
Glock 17Pr​o
Posté le 08-05-2009 à 20:47:04  profilanswer
 

pour le plaisir et ça pourra servir à d'autre :
 

Code :
  1. template <class ManufacturedType, typename ClassIDKey=std::string>
  2. class GenericFactory
  3. {
  4. public:
  5. typedef std::auto_ptr<ManufacturedType> (*BaseCreateFn)();
  6.     typedef std::map<ClassIDKey, BaseCreateFn> FnRegistry;
  7.     FnRegistry registry;
  8. public:
  9.     static GenericFactory &instance(){ static GenericFactory bf; return bf; }
  10.     void RegCreateFn(const ClassIDKey &, BaseCreateFn);
  11.     std::auto_ptr<ManufacturedType> Create(const ClassIDKey &className) const;
  12. };
  13. ///////////////////////////////
  14. template <class ManufacturedType, typename ClassIDKey>
  15. void GenericFactory<ManufacturedType,ClassIDKey>::RegCreateFn(const ClassIDKey & className, BaseCreateFn fn)
  16. {
  17.     registry[className] = fn;
  18. }
  19. ///////////////////////////////
  20. template <class ManufacturedType, typename ClassIDKey>
  21. std::auto_ptr<ManufacturedType> GenericFactory<ManufacturedType,ClassIDKey>::Create(const ClassIDKey &className) const
  22. {
  23.     std::auto_ptr<ManufacturedType> theObject(0);
  24.     FnRegistry::const_iterator regEntry = registry.find(className);
  25.     if (regEntry != registry.end())
  26.     {
  27.         theObject= regEntry->second();
  28.     }
  29.     return theObject;
  30. }
  31. template <class AncestorType, class ManufacturedType, typename ClassIDKey=std::string>
  32. class RegisterInFactory
  33. {
  34. public:
  35.     static std::auto_ptr<AncestorType> CreateInstance()
  36.     {
  37.         return std::auto_ptr<AncestorType>(new ManufacturedType);
  38.     }
  39.     RegisterInFactory(const ClassIDKey &id)
  40.     {
  41.         GenericFactory<AncestorType>::instance().RegCreateFn(id, CreateInstance);
  42.     }
  43. };
  44. struct Figure
  45. {virtual void SeDessiner(){cout<<"Je suis une Figure"<<endl;}};
  46. struct Carre : public Figure
  47. {void SeDessiner(){cout<<"Je suis un Carre"<<endl;}};
  48. struct Voiture
  49. {virtual void SeDessiner(){cout<<"Je suis une Voiture"<<endl;}};
  50. struct Ferrari : public Voiture
  51. { void SeDessiner(){cout<<"Je suis une Ferrari"<<endl;}};
  52. int main()
  53. {
  54. RegisterInFactory<Voiture, Voiture> registerMe("Voiture" );
  55. RegisterInFactory<Voiture, Ferrari> registerMe2("Ferrari" );
  56. RegisterInFactory<Figure, Carre> registerMe3("Carre" );
  57. GenericFactory<Voiture>::instance().Create("Voiture" )->SeDessiner();
  58. GenericFactory<Figure>::instance().Create("Carre" )->SeDessiner();
  59. GenericFactory<Voiture>::instance().Create("Ferrari" )->SeDessiner();
  60. system("pause" );
  61. }


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  abstract factory et factory

 

Sujets relatifs
Champs ou méthode abstract ET statique (vive la POO)Design pattern Factory
Abstract Extends et Super...[resolu] Conflit Virtuel Static ( Factory Design Pattern )
must implement the inherited abstractintérêt du pattern factory
[Java] héritage abstract[corba] Obtenir la reference de channel & channel factory
LATEX, probleme pour faire un abstract ... assez urgentAbstract Factory Patterns
Plus de sujets relatifs à : abstract factory et factory


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR