私は簡単にテストできるコードを書こうとしています。それは新しいClass1()を直接呼び出すことを避けることにつながります。代わりに私は通常、このインターフェイスを返すGetObject()メソッドを持つ単純なファクトリであるインターフェイスを作成します。テスト可能なコードを書いた結果、工場が多すぎます
正常に動作します。私が見つけた問題は、新しいClass1()(またはそれらが作成する責任を負うクラス/インタフェース)を呼び出すことを除いて、基本的に何も起きていない工場が多すぎることです。私はそれがテスト可能なコードを持っているために支払う大きな費用だとは思っていません...誰もより良いaproachを使用し、まだテスト時にClass1の異なるimplementetaionを注入できるという目標を達成していますか?
Class1の実装をプロパティとして公開し、実行時にデフォルト値を使用することができますが、これは1インスタンスに制限されていることを意味しますが、多くの場合、Class1が必要なたびに新しいインスタンスを作成します。
編集:
私はIoCを使用しており、実際に役立ちます。それにもかかわらず、私は通常、IoC構成に依存する工場を持つことになります。私のGetObjectメソッドは通常、IoC.Resolveのようなものを呼び出します。私は、ビジネスロジックを含むドメインクラスに直接ではなく、工場でIoC依存関係を分離することを好みます。
IoCコンテナが必要です。 –
@Martinho - あなたはあなたの回答を精緻化し、それを答えに入れることができますか? –