86 votes

Quels modèles de conception peuvent être appliqués au problème des paramètres de configuration?

Dans les grandes et complexes produits logiciels de gestion des paramètres configurables devient une grande douleur. Deux approches que j'ai vu pour le problème sont:

  • demandez à chaque composant dans le système de chargement d'une configuration propre à partir de fichiers de configuration ou les paramètres du registre.
  • avoir un des paramètres du chargeur de classe qui se charge de tous les système configurable paramètres de chaque composant de requête, les paramètres du loader pour ses paramètres.

Ces approches à la fois sentir mauvais pour moi.

Existe-il des modèles de conception qui pourraient être utilisés pour simplifier le problème? Peut-être quelque chose qui prennent avantage de l'injection de dépendance technique.

49voto

Reed Copsey Points 315315

Je préfère créer une interface pour configurer la requête, le chargement et la sauvegarde. En utilisant l'injection de dépendance, je peux l'injecter dans chaque composant qui en a besoin.

Cela permet une flexibilité en termes de remplacement de la stratégie de configuration, et fournit une base commune pour que tout fonctionne. Je préfère cela à un seul "chargeur de paramètres" global (votre option 2), d'autant plus que je peux outrepasser le mécanisme de configuration d'un seul composant si j'en ai absolument besoin.

21voto

Brent Nash Points 6337

Je travaille actuellement sur un système où la configuration est gérée par un objet singleton qui maintient une carte de la configuration des touches de valeurs. En général, je voudrais qu'il n'avait pas été fait de cette façon, car cela peut causer de la simultanéité des goulots d'étranglement dans le système et c'est bâclée pour les tests unitaires, etc.

Je pense que Reed Copsey a le droit de celui-ci (j'ai voté lui), mais je recommande vivement la lecture de Martin Fowler excellent article sur l'injection de dépendance:

http://martinfowler.com/articles/injection.html

Une légère addendum trop...si vous voulez faire les mock type d'objet de tests unitaires, d'injection de dépendance est certainement le chemin à parcourir.

5voto

Alain Désilets Points 21

Comment à ce sujet. Vous définissez une interface Configurable avec une seule méthode configure(configuration). La configuration de l'argument est tout simplement une table de hachage qui associe les noms de configuration des paramètres avec leurs valeurs.

Racine objets peut créer une configuration de table de hachage, de quelque manière qu'ils veulent (ex: lecture à partir d'un fichier de config). Cette table de hachage peut contenir des paramètres de configuration de l'objet racine iselft, en plus de n'importe quel paramètre que l'un de ses composants, de sous-composants, sous-sous-sous-composants (etc) pourraient utiliser.

L'objet racine invoque ensuite configure(configuration) sur l'ensemble de ses composants configurables.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X