6

最近、IoC、DI、およびサービス ロケーターについてよく読んでいますが、ある疑問が頭に浮かびました。依存関係を呼び出すために DI がコンテナを使用することがありますよね?しかし、そのコンテナーはサービス ロケーターではありませんか?

この2つの違いがわかりません。

4

2 に答える 2

2

コンテナーは依存関係を登録し、それらを解決できます。一方、ロケーターはコンテナーを使用してサービスを解決します。

コンテナを使用できるようにするには、コンテナへの参照が必要です。一方、ロケーターは通常、静的に利用できるため、参照する必要はありません。

ロケーターは、依存関係を「その場で」解決できるため、実際には依存関係を暗黙的にするという理由だけで、アンチパターンと見なされます。これは、実行時に表示されるまで、クラス クライアントが依存関係を認識しないことを意味します。

于 2012-12-23T21:05:08.713 に答える