7

最近、Service Locator の「アンチパターン」を使用することと Castle Windsor コンテナを使用することの違いを理解しようとしています。インターネットのあちらこちらでいくつかの情報を見つけ、これまでに学んだことを未完成のブログ投稿にまとめました。

EDIT:これまで、分離を保証するために必要なのは依存性注入だけだと考えていました。しかし、どこを見ても、Castle Windsor のようなコンテナの方向へのプッシュが見られます。その理由を明確に理解したいと思います。お願い...私が6歳のようにこれを説明してください:)

4

3 に答える 3

3

サービス ロケーターは、Castle Windsor などのコントロール コンテナーの特定の反転のラッパーにすぎない場合があります。要点は、コードが (理想的には) コンテナーを参照する唯一の場所は、コンポジション ルートにあるということです。

制御コンテナーの反転は依存関係の連鎖をサポートしているため、コンテナーからルート タイプを解決すると、そのすべての依存関係と子孫の依存関係が注入されます。

実行時にさらに型を作成したい場合は、ファクトリを使用できます。これは、コンテナーによって提供される依存関係の連鎖と、実装に対するインターフェイスのコンテナー マッピングを利用したい場合に、コンテナーへの参照を持つこともできます。

于 2013-04-20T16:22:49.653 に答える
3

サービス ロケータを使用すると、コードはあらゆる場所でサービスのロケータを呼び出します。制御の反転を使用する場合、コンテナーを呼び出す場所は 1 つ (コンポジション ルート) だけです。アプリの残りの部分はコンテナー対応にしないでください。

于 2013-04-21T14:52:01.007 に答える