2017-01-31 11 views

答えて

1

いいえ、DIコンテナ自体はサービスロケータではありませんが、そのように使用できます。それはその使用に完全に依存します。

限り、あなたはComposition Root容器内部を使用して、それがnotサービスロケータです。ただし、コンテナルートの外側にコンテナを使用すると、コンテナへの呼び出し(またはそのコンストラクタ上の抽象化)はService Locator anti-patternのフォームになります。

2

このMartin Fowler氏articleは2間の区別を言及:

二つのパターンの間の重要な違いは、その実装がアプリケーションクラスにどのように提供されるかについてです。サービスロケータでは、アプリケーションクラスはロケータへのメッセージによって明示的にそれを要求します。インジェクションでは明示的な要求はなく、アプリケーションクラスにサービスが表示されます。したがって、制御が逆転します。

+0

引用符は、「Service Locator vs Dependency Injection」からの引用です。したがって、引用文は依存関係注入とサービスロケーションの違いについて説明していますが、それはその質問に答えません。質問は* Container *に関するものです。 Dependency Injection *と* Service Locationの両方を行うことができるツール。 – Steven

関連する問題