Bonjour,
Petit souci de choix ente deux techniques. J'illustre ça par un exemple : je réalise une classe DocumentManager, pour gérer les documents d'une appli, de manière générique (en gros pour éviter de refaire les procédures d'ouverture, sauvegarde, etc à chaque fois). Pour la sauvegarde par exemple, l'appli demande généralement le nom du fichier dans lequel va être sauvegardé le document. Comme cela varie en fonction des libs graphiques utilisées, il faut que ce soit paramétrable. D'où ma question : est-il préférable de le faire sous forme de Policy ?
(Bon ici j'ai choisi l'héritage, ça peut très bien être une composition, la questino n'est pas là).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 template <class SavePolicy> class DocumentManager : public SavePolicy{ //quelque part dans la fonction save : std::string file_name = SavePolicy::get_file_name();
Ou bien en utilisant une interface Save, et redéfinir les comportements pour chaque librairie :
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 class DocumentManager { SavePolicy* save; }; class SavePolicy { public: virtual std::string get_file_name() =0; }; class QTSavePolicy { //etc }
Partager