我有很多(抽象)工厂,它们通常被实现为单例。
通常是为了方便,不必让他们通过那些真正与使用或了解这些工厂无关的层。
大多数时候我只需要在启动时决定其余代码程序的工厂实现,也许通过一些配置
它看起来像
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 还顺便说一句)?