2009-06-10 9 views
6

IoCコンテナが何であり、構造マップ上で読んでいるのか理解しています。この技術は使用するのに十分なほど簡単です。私の質問は、IoCコンテナを使用するための粒度の適切なレベルは何ですか?IoCを適切に使用するのはいつですか?

私はIoCのためのアプリケーションの次の可能なレベルを参照してください。

  1. ブレークすべてのオブジェクト間のすべての依存関係 - 確かにやり過ぎを。
  2. ドメインオブジェクト、サポートクラス、サブシステム内のコンポーネントなど、すべての主要オブジェクト間の依存関係を解除します。
  3. IoCをファサードと組み合わせて使用​​すると、ロギングなどのサブシステムをパブリックインターフェイスでラップし、そのインターフェイスへの依存関係を解除できます。

私はこの質問に対する答えは「それは依存している」ことを知っていますが、あなたの経験からは何が答えるのでしょうか?プロジェクトの規模は要因ですか?

さらに、IoCはどこで使用するのが理にかなっていませんか?

+0

これは関連する質問です。 http://stackoverflow.com/questions/45191/ioc-explain-and-more-important-when-to-use-it –

答えて

1

アイデアはドメインオブジェクト間の依存関係を解消するものではなく、ドメインを外部から保護するためのものです。あなたのドメインオブジェクトは、あなたのオブジェクトのうち、とIoCコンテナに責任を動かす程度

この記事の話...あなたはなどのデータベース、ログ、キャッシュ、HTTPコンテキスト、残りのサービスについては解決されておらず、どのようなビジネス上の問題であるべきです。

http://www.agileatwork.com/captcha-and-inversion-of-control/

1

単体テストがたくさん書かれていることが分かっているときに、それらのテストの構築が容易になるので、それを使うのが理にかなっていると思います。また、実行時にオブジェクトの動作を変更することもできます(外部構成を介して)。

大規模なデカップリングを必要としない小規模なプロジェクトやプロジェクトでIoCを使用することは意味がありません。

0

要件が頻繁に変更されるため、または開発者のチームで大規模なシステムで作業する場合に、柔軟なアプリケーションが必要な場合は、最も理にかなっています。あなたの作品を操作してIoCがあなたの依存関係を世話することができるので、チームで働くときに役立ちます。

0

IOCのシナリオの1つは、特定の実装の決定が開発チーム間で競合する場合です。 IOCは、最小限の摩擦で実装をスワップアウトできる柔軟性を提供します。これは何よりも戦術的な考察です。あなたが例えば実装の複数のタイプを持っていない非常に具体的なコンポーネント...

をプログラミングしている場合

1

まあ、IOCは多くの意味がありません。あなたの会社のドキュメントリーダーをプログラミングしていて、読者の背後にあるビジネスルールは、MS Wordドキュメント以外の他のドキュメントタイプを読み取ることはないということを知っています。この場合、テストしているコンポーネントがMS Wordドキュメント以外のものに決して依存しないため、単体テストでは依存関係注入の疎結合は実際には必要ありません。リーダのタイプを解決するためにIOCコンテナを使用するのは難しいかもしれません。

関連する問題