【发布时间】:2010-11-20 02:01:09
【问题描述】:
我有很多(抽象)工厂,它们通常被实现为单例。
通常是为了方便,不必将它们通过与使用或了解这些工厂无关的层。
大多数时候我只需要在启动时决定其余代码程序的工厂实现,也许通过一些配置
它看起来例如喜欢
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();
....
}
有些东西确实闻到了这个味道,我只是不确定是什么 - 它可能更像是一个disuised global而不是一个单身人士。并不是真的必须只有一个工厂创建 ColumnCalculations - 尽管我的程序不需要更多。
这被认为是最佳做法吗?我是否应该将这些东西放在一些(半)全局 AppContext 类中?别的东西(我还没准备好切换到一些更大的 IoC 容器,或者 spring.net 顺便说一句)?
【问题讨论】: