-
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
-
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...
-
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