1

制御の反転を実現するには、サービス ロケーターまたは依存性インジェクターのいずれかを使用できます。Service Locator は、DI よりもコーディングが困難または長くなる可能性があります。Service Locator は Factory パターンの別名のようなものだと思いますよね?また、いつ DI の代わりに SL を使用する必要があるかわかりません。それらのいずれかを適用する実際のケースはありますか?

4

2 に答える 2

1

デフォルトの位置として、ServiceLocators は避けてください。この件に関するMark Seemann の優れたブログ投稿を参照してください。

依存性注入は維持がはるかに簡単で、「インジェクター」または DI フレームワークをまったく必要としません。それは、オブジェクト自体に依存関係を収集させるのではなく、オブジェクトに依存関係を (できればコンストラクターで) 提供するだけの問題です。私は DI をかなり厳格に支持しており、DI フレームワークを使用することはほとんどありません。

于 2013-01-26T19:30:08.710 に答える
0

SLとFactoryのパターンには微妙な違いがあると思います。

一般に、ファクトリ パターンはサービスの新しいインスタンスを作成し、呼び出し元がインスタンスの所有者になります。

一方、サービスロケーターは、サービスの既存のインスタンスを提供します。呼び出し元は、このインスタンスの「所有者」にはなりません。このような既存のインスタンスは、多くの場合、すべてのクライアント間で共有されます。ほとんどの場合、既存のインスタンスをインスタンス化する責任は、サードパーティのコードに任されています。

于 2013-01-26T19:30:35.840 に答える