Perso, je suis pas trop d'accord, dans tout mes projets (et projets professionnel) les classe de configuration sont des singleton renvoyant les différentes variables.
Exemple:
Mon fichier de configuration est un xml classique:
1 2 3 4
| <configuration>
<port>4242</port>
<ip>127.0.0.1</ip>
</configuration> |
Ensuite ma classe de configuration va aller parser ce fichier et stocker les information sous forme de map:
std::map<std::string, std::string> info;
Pour y accéder j'ai juste besoin d'appelé une des fonction pour récupérer une variable:
1 2 3 4 5 6 7 8
| int getInt(std::string cle)
{
return (toInt(info[cle]));
}
std::string getString(std::string cle)
{
return (info[cle]);
} |
(Ce n'est qu'une ébauche de ce que j'ai réellement, mais c'est pour donner une idée).
Ce système permet de rajouté des variable dans le fichiers de configuration sans avoir à recodé une partie du programme.
C'est beaucoup plus dynamique que d'avoir un membre d'une classe qui stock un paramètre. Imagine que tu doives rajouter x paramètre pour plusieurs classes, il faudra alors que tu re-développe les constructeurs de tes classes.
Imagine une classe ayant besoin de 10 paramètre, tu vas pas appelé un constructeur avec 10 variable quand même?
Imagine que ce constructeur soit appelé 50 fois dans ton code, tu vas aller modifié 50 fois ces lignes?
C'est pourquoi je pense qu'il est nettement mieux de passer par un singleton pour la configuration, ce n'est pas une partie très sensible d'une application donc on peut se le permettre.
Partager