«Синглтон» фабрики, хорошо или плохо?
у нас много (абстрактных) фабрик и ониобычно реализуются как синглтоны.
Обычно для удобства не нужно проходить их через слои, которые действительно не имеют никакого отношения к использованию или знанию этих фабрик.
В большинстве случаев мне нужно только принять решение при запуске, какая фабричная реализация остальной части кода программы, может быть, через какую-то конфигурацию
это выглядит, например, лайк
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, кстати, еще нет)?