"Singleton" Fabriken, ok oder schlecht?

Ich habe viele (abstrakte) Fabriken und sie sind normalerweise als Singletons implementiert.

Normalerweise, um sie nicht durch Schichten laufen zu müssen, die wirklich nichts damit zu tun haben, diese Fabriken zu nutzen oder zu kennen.

In den meisten Fällen muss ich nur beim Start entscheiden, welche Factory-Implementierung der Rest des Code-Programms sein soll, möglicherweise durch eine Konfiguration

es sieht z.B. mögen

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();
    ....

}

Etwas riecht daran, ich bin mir nur nicht sicher, was - es ist vielleicht mehr ein getarnter Global als ein Singleton. Es ist nicht so, dass es wirklich wirklich istmüssen, zu ... haben Sei immer nur eine Factory, die ColumnCalculations erstellt - obwohl meine Programme nicht mehr brauchen.

Wird dies als Best Practice angesehen? Soll ich diese lieber in eine (semi) globale AppContext-Klasse packen? Noch etwas (ich bin noch nicht bereit, auf einen größeren IoC-Container oder spring.net umzusteigen)?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage