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

C++ Discussion :

factory method


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 85
    Points : 55
    Points
    55
    Par défaut factory method
    Bonjour,
    je voudrais implémenter une classe factory avec une method create_object qui puisse créer un pointeur sur un objet d'une classe à partir d'un mot clés.
    L'idée est de définir des mots clés pour chaque classe et de créer des objets de la sorte:
    DECLARE_CLASS(A,"keyword_A");
    classe A : public base {}
    DECLARE_CLASS(B,"keyword_B");
    classe B : public base {}

    création :

    string str="keyword_A"
    base* ptr=create_object(str);

    Voila un peu l'idée est de créer des objets d'une classse à partir d'un mot clés sans savoir à l'avance le type de l'objet qui va être créer.

    Merci
    Xavier

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Ca m'a l'air très louable, comme but. C'est aussi un des grands classiques des design patterns. Et quel est ton soucis ?

    Perso, je partirais vers un std::map<string, boost::function< Base* (/*arguments de constructeur*/) > > comme structure de stockage de cette factory.

    Pour enregistrer dans la factory, le truc classique est de définir un objet global qui ne sert qu'à enregistrer la classe en side effect de son constructeur, mais attention, le linker peut décider d'enlever les objets qu'il juge (à tort) non utilisés dans une bibliothèque...
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 85
    Points : 55
    Points
    55
    Par défaut
    Mon souci est que je n'ai jamais fait ca et je cherche éventuellement des exemples de factory histoire de me donner une idée des différentes choses à faire.
    Je suis en train de développer un logiciel perso.

    Merci de m'aider
    xavier

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/10/2009, 19h03
  2. Problème avec factory-method sur WebSphere
    Par enimnez dans le forum Spring
    Réponses: 0
    Dernier message: 07/05/2009, 15h55
  3. [Fabrique] [Factory Method] Questions
    Par Aïssa dans le forum Design Patterns
    Réponses: 4
    Dernier message: 17/01/2007, 12h39
  4. Spring et factory-method
    Par dehbi dans le forum Spring
    Réponses: 3
    Dernier message: 31/03/2006, 16h00
  5. [GOF] Abstract Factory vs Factory Method
    Par Greybird dans le forum Design Patterns
    Réponses: 3
    Dernier message: 10/06/2005, 22h42

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