つまり、クラスA、B、Cがあるとします。クラスAには単一責任がありますが、クラスBとCの機能が必要なので、最初はAにBとCから継承させたいと考え、次に「継承に対する構成」に従って実現しました。原則として、AIのBおよびCメンバーを作成すると、設計の剛性が低下し、これら2つのクラスがより再利用可能になる可能性があります。
最初はBとCをAのコンストラクターでインスタンス化するだけで済みましたが、最終的には他の2つまたは3つの場所で呼び出す必要のあるメソッドがありました。他の場所でクラスを再利用していたため、適切な場所で多くの不要な欠陥が発生し、時間が無駄になります...私の質問は、依存性注入がこの問題に役立つのか、構成の使用の複雑さを軽減するのに役立つのか、もしそうならどのように役立つのかということです。
public class A
{
private mB;
private mC;
public A(IB b, IC c)
{
mB = b;
mC = c;
}
public MethodX()
{
mB.DoWhatever();
}
public MethodY()
{
mC.DoSomething();
}
}
私が理解していることから、DIを使用すると、IBとICの具体的なクラスをこのようなコンストラクターに通してその作成を処理することができますが、他にどのように役立ちますか(複雑さに関して)?
私はこの記事を理解していないことに基づいてこの質問をすることにしました:http://lostechies.com/chadmyers/2010/02/13/composition-versus-inheritance/
実際の例として、StateがBeginメソッドを呼び出すときにイベントを登録し、Endメソッドを呼び出すときに登録を解除する必要があるEventListenerクラスを含むStateクラスがあるとします。