“Singleton” usines", bon ou mauvais?

J'ai beaucoup de (résumé) les usines et ils sont généralement mis en œuvre comme des singletons.

Généralement pour la commodité de ne pas avoir à passer à travers les couches qui n'ont vraiment pas d'affaires avec l'aide ou la connaissance de ces usines.

La plupart du temps, j'ai seulement besoin de prendre une décision au démarrage dont l'usine de mise en œuvre, le reste du programme du code d', peut-être par le biais de certains de configuration

il semble par exemple comme

abstract class ColumnCalculationFactory { 
  private static ColumnCalculationFactory factory;

 public static void SetFactory(ColumnCalculationFactory f) {
         factory = f;
  }

  public static void Factory() {
         return factory;
  }

 public IPercentCalculation CreatePercentCalculation();
 public IAverageCalculation CreateAverageCalculation();
    ....

}

Quelque chose ne sentent à ce sujet, je ne suis pas sûr de ce que - c'est peut-être plus d'un disuised global qu'un singleton. C'est pas comme si il n'y a vraiment vraiment ont pour être une seule usine jamais de création de ColumnCalculations - bien que mes programmes n'ont pas besoin de plus.

Est-ce considéré comme le meilleur practuce ? Devrais-je plutôt des trucs dans une (semi) global AppContext classe ? Quelque chose d'autre(je ne suis pas tout à fait prêt à passer à une plus grande conteneur IoC, ou spring.net tout à fait encore d'ailleurs) ?

InformationsquelleAutor leeeroy | 2009-08-16