テスト容易性以外にも、D.I.を利用する大きな利点は何ですか? (そして私は静的クラスよりもD.I.フレームワークやIoCについて話していません)?特に、サービスがスワップアウトされないことを知っているアプリケーションの場合。テスト以外に、静的クラス/メソッドより依存性注入はどのように優れていますか?
私たちのC#アプリケーションの1つでは、私たちのチームは静的メソッドを使用するのではなく、Web Web GUI、サービスレイヤー、およびリポジトリレイヤーでDependency Injectionを利用しています。過去には、静的クラスによって作成、変更、渡され、保存されたPOCO(ビジネスエンティティオブジェクト)がありました。
は、例えば、過去に我々が書かれている場合があります:
//not shown, _creditService instantiation/injection in c-tors
CreditEntity creditObj = _creditService.GetCredit(customerId);
Decimal creditScore = _creditService.CalculateScore(creditObj);
return creditScore;
あまり違いはありませんが、今、私たちは数十を持っている:
CreditEntity creditObj = CreditEntityManager.GetCredit(customerId);
Decimal creditScore = CreditEntityManager.CalculateScore(creditObj);
return creditScore;
さて、DIと、同じコードは次のようになりますより広範なスコープを持つサービスクラスです。つまり、静的であるかのように扱う必要があります(つまり、依存関係の定義に使用されていない限り、privateメンバー変数はありません)。さらに、これらのメソッドのいずれかがリソース(データベース/ Webサービス/ etc)を利用する場合、依存関係を削除して古い静的メソッドまたはusing(...)
メソッドを使用しない限り、並行性の問題を管理するのが難しいことがわかります。
"テスト容易性の他に、D.I.を利用する大きな利点は何ですか? 「私の頭の上に屋根を置く以外に、仕事をするのに大きな利点は何か」と私に言っているようなものです。 – TrueWill