«Синглтон» фабрики, хорошо или плохо?

у нас много (абстрактных) фабрик и ониобычно реализуются как синглтоны.

Обычно для удобства не нужно проходить их через слои, которые действительно не имеют никакого отношения к использованию или знанию этих фабрик.

В большинстве случаев мне нужно только принять решение при запуске, какая фабричная реализация остальной части кода программы, может быть, через какую-то конфигурацию

это выглядит, например, лайк

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

}

Что-то пахнет об этом, яЯ просто не уверен, что - этоВозможно, это скорее замаскированный глобал, чем синглтон. Это'не так, как там на самом деледолжен быть только одной фабрикой, когда-либо создававшей ColumnCalculations - хотя мои программы неМне нужно больше.

Это считается лучшей практикой? Должен ли я добавить их в некоторый (полу) глобальный класс AppContext? Что-то еще (яЯ не совсем готов к переходу на какой-то более крупный контейнер IoC, или Spring.net, кстати, еще нет)?

Ответы на вопрос(6)

Ваш ответ на вопрос