:複数のクラスは、サブクラスレベルで追加した場合、私はちょうどクラスA
とB
、またはそのデザインパターン間の依存関係を削除するための最良の方法を探して2つのクラス間の依存関係を削除するにはどうすればいいですか?例えば
public class A {}
public class B
{
public void test()
{
A obj = A();
}
}
は、このために最も適しているのですか?
:複数のクラスは、サブクラスレベルで追加した場合、私はちょうどクラスA
とB
、またはそのデザインパターン間の依存関係を削除するための最良の方法を探して2つのクラス間の依存関係を削除するにはどうすればいいですか?例えば
public class A {}
public class B
{
public void test()
{
A obj = A();
}
}
は、このために最も適しているのですか?
A
のインスタンスをコンストラクタで受信します。 A
にいくつかのインターフェイスを継承させて、そのインターフェイスをコンストラクタで受け取る方が良い場合もあります。 Dependency InjectionとInversion of Controlの概念に
public interface IA {}
public class A : IA {}
public class B
{
public IA AInstance { get; set; }
public B (IA a)
{
AInstance = a;
}
public void test()
{
/* do something with `AInstance` */
}
}
ルック:
あなたは依存関係としてIA
を取得するが、その後工場のデザインパターンを使用してB
がISomeFactory
のいくつかのインスタンスに依存しましょうあなたのB
クラスでの新しいインスタンスを作成する必要ができない場合、私はあなたをお勧めしたいですデザインパターンとしてIoCを使用します。それはあなたのクラスの依存関係を削除し、インターフェイスではない実装にユニットテスト
プログラムしながら、あなたのオブジェクトを模擬することが可能となります。 – dotctor