私は(抽象的な)工場をたくさん持っていますが、それらは通常シングルトンとして実装されています。
通常、これらのファクトリを使用したり知ったりすることに実際に関係のないレイヤーにそれらを渡す必要がないという利便性のためです。
ほとんどの場合、起動時にどのファクトリ実装のコード プログラムの残りの部分を決定する必要があるかだけです。
それは例えばのように見えます
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 を作成するファクトリが 1 つだけ存在する必要があるというわけではありません。
これはベストプラクティスと見なされますか? これらを(半)グローバル AppContext クラスに詰め込む必要がありますか?他に何か(私はまだ大きなIoCコンテナ、またはspring.netに切り替える準備ができていません)?