Bonjour,
j'ai une question très peu précise qui me taraude depuis quelques jours, et j'aurais aimé avoir d'autres avis que le mien.
Nous avons une classe Data, qui contient quelques données. Pas beaucoup: disons 4 variables membres.
Cette classe a une sémantique de valeur; elle va être stockée dans des conteneurs, triée, copiée, etc.
Elle sera donc dotée du big 5 (dtor, default ctor, copy ctor, move ctor et operator =).
Maintenant voici mon problème. Cette classe Data va être instanciée et construite de diverses façons. Elle peut être construite à partir de trames reçue par le module réseau, à partir de données récupérées par le gestionnaire de configuration, via l'interface d'accès aux bases de données, etc.
Mon interrogation consiste à trouver la meilleure façon de gérer ces multiples façons de créer mon objet. La première tentation consiste à passer par une factory. Mais étant donné que mon objet est petit et qu'il n'évoluera pas, j'ai l'impression que de passer par une factory c'est un peu le "bulldozer pour planter une fleur", si vous voyez ce que je veux dire.
Alors je réfléchissais à ajouter des fonctions membres à ma classe Data, du style:
void CreateFromRecord( const DataBaseRecord & record );
void CreateFromFile( ifstream & file );
// etc.
Cette solution me plait plus, car ça simplifie mon design, ça fait une classe en moins etc, bref, ça simplifie la maintenance. Mais je ne sais pas, j'ai le sentiment qu'il y a quelque chose qui ne va pas avec cette façon de faire. C'est pourquoi je voulais avoir votre avis, vos réflexions.
Partager