2010-07-19 3 views
2

Ok, je vais garder cela très simple. Quelle méthode est la meilleure pour les gestionnaires de db dans une application: singleton, modèle de registre, classe de configuration statique ou fichiers de configuration.Singleton, Registry ou fichiers de configuration pour le gestionnaire db

Ive été lu à ce sujet et il semble y avoir beaucoup d'idées contradictoires à ce sujet. Je comprends qu'il n'y aura pas de solution unique, mais généralement quelle est la meilleure pratique pour ce type de problème.

Répondre

1

N'utilisez jamais Singleton, ce n'est qu'une énorme variable globale de klaxon dont l'initialisation est liée à la durée de vie de votre processus et non la ressource qu'il gère. Ce que vous voulez, c'est un objet injecté dans chaque portée qui en dépend, en d'autres termes, le modèle que vous recherchez est Injection de dépendances.

Pour la plus simple des applications, utilisez simplement les paramètres de ligne de commande et un objet de configuration.

Pour les applications un peu plus complexes, autorisez la création d'un objet de configuration par défaut à partir d'un fichier de configuration, puis sa modification par les paramètres de ligne de commande.

Pour les applications modérément plus complexes, intégrez les fonctions par défaut de votre plate-forme/langue/système d'exploitation du système d'exploitation pour fournir les valeurs par défaut.

Pour les applications de production, utilisez un conteneur IoC-DI et les objets config/db/etc construits à l'extérieur de vos classes d'application et injectés lors de l'exécution. La clé est d'éviter d'avoir un objet de configuration statique de processus, car cela va interférer avec les tests, les redémarrages logiciels et rendre plus difficile la migration vers des approches de configuration plus flexibles.

+1

Une petite note ici ... vous voudrez peut-être éviter d'utiliser le mot «jamais» lors de la discussion des modèles de conception. Par exemple, le problème que vous avez mentionné au sujet de la durée de vie de Singleton n'est vraiment pas un problème dans beaucoup d'applications Web PHP. –

Questions connexes