[POO] Gestion de la configuration
Bonjour
Je suis débutant en POO .
Je me pose des questions au niveau de la conception (peut être trop), Dans mon application développée en C++ certains de mes objets utilisent des configurations enregistrées dans des fichiers XML ou INI.
J’ai eu plusieurs idées de codage, pour le moment, j’en ai retenu 2 et j’aimerai votre avis sur celles-ci. Je suis peut être complétement dans l’erreur.
La première serait d’avoir une Configuration membre d’Objet.
Comme cela, je n’ai aucun paramètre à passer au constructeur d’Objet mais du coup je ne suis pas sure que mon code soit très réutilisable et testable.
Configuration 1 :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| class Configuration
{
public:
Configuration();
int getA();
int getB();
int getC();
private:
String m_fileName;
}; |
Objet 1:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class Objet
{
public:
Objet ();
/*
...
*/
private:
Configuration m_configuration;
/*
...
*/
}; |
Service 1:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class Service
{
public:
Service();
/*
...
*/
private:
Objet m_ objet;
/*
...
*/
}; |
La seconde façon est quasiment la même que la première, sauf que cette fois Configuration et Objet sont tous les deux membres de la classe Service, je trouve que le code est plus testable mais légèrement moins simple à utiliser.
Configuration 2:
Code:
1 2 3 4 5 6 7 8 9 10 11
| class Configuration
{
public:
int getA();
int getB();
int getC();
private:
String m_fileName;
}; |
Objet 2:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class Object
{
public:
Object(int a, int B, int c);
/*
...
*/
private:
int m_a
int m_b;
int m_c;
}; |
Service 2:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class Service
{
public:
/*
...
*/
private:
Objet * m_objet;
Configuration m_configuration;
/*
...
*/
}; |
Et pour la classe configuration, j’ai également plusieurs idées :
Soit je lis directement dans mon fichier à chaque fois que j’ai besoin d-une valeur.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| class Configuration
{
public:
Configuration();
int getA();
int getB();
int getC();
private:
String m_fileName;
}; |
Soit je charge les valeurs contenues dans mon fichier à la création.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class Configuration
{
public:
Configuration();
bool load();
int getA();
int getB();
int getC();
private:
String m_fileName;
int m_a
int m_b;
int m_c;
}; |
Merci d’avance.