2012-08-30 8 views

答えて

5

ファウラーは彼のInversion of Control Containers and the Dependency Injection pattern Headingの2つの比較がよくあります。彼の結論によれば、

依存関係注入は、Service Locatorの便利な代替手段です。 アプリケーションクラスを構築する場合、2つはおおよそ同等ですが、 は、サービスのロケータが、より多くの直接的な動作のためにわずかなエッジしかないと思います。しかし、複数のアプリケーションで使用されるクラスを構築する場合は、 を使用すると、依存性注入がより良い の選択肢になります。

あなたはDIについてはhere

でより多くの視点との比較を見つけることができます:

  • 簡単にしているコンポーネントの依存性かを決定するために - コンストラクタを見て。
  • コンポーネントがサービスロケータに依存しないので、 コンポーネントが別の フレームワークで使用されている場合は問題ありません。
  • DIは、より簡単にテストすることがありますが良いサービスロケータ メカニズムはDI反し

も同様に実現可能なスタブようになります:

  • ハーダーデバッグすると理解しています。
  • コンポーネントは、一度構成されたインジェクタから余分なサービスを要求することはできません。