«Синглтон» заводы, хорошо или плохо?

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

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

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

это выглядит, например, любить

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)

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