シングルトンに対するサービスロケータの使用のメリットとデメリットは何ですか?私はシングルトンが悪いと読んだことがありますが、サービスロケータが一般的には良いことをやっているのだろうかと思っています。シングルトン対ServiceLocator
6
A
答えて
9
どちらのアプローチも、クラスコントラクトからその依存関係が明らかではないという点で悪いです。それは
private void foo()
{
var x = SomeSingleton.Instance.GetX();
var y = ServiceLocator.GetService<IProvider>().GetY();
}
がSomeSingleton
と深いどこかの内部に埋め込まIProvider
への参照を持っている、です。
しかし、純粋なシングルトンアプローチと比較して、サービスロケータは、より簡単な中央設定、ライフタイム管理などを可能にする点で、一般的にはるかに優れています。懸念の分離など。
0
テストの可能性が懸念される場合、サービスロケータを使用すると純粋なシングルトンがはるかによくなります。
関連する問題
- 1. シングルトン対コアデータ
- 2. シングルトン対インテント(アンドロイド)
- 3. Hystrixコマンドオブジェクト:new対シングルトン
- 4. zf2 ServiceManager vs ServiceLocator
- 5. のServiceLocatorは
- 6. シングルトン対応リストのパターン
- 7. HttpCache対シングルトン - MVCアプリケーションのベストプラクティス
- 8. シングルトン対依存性注入
- 9. ServiceLocatorによるユニットテスト
- 10. ServiceLocator現在のGetInstance?
- 11. eager初期化シングルトン対遅延初期化シングルトン
- 12. ゲームのビュー:インスタンス変数対シングルトン?
- 13. シングルトン対スタティック:Webサービスクライアント宣言のベストプラクティス
- 14. ServiceLocatorの使用を避ける
- 15. シングルトン
- 16. シングルトンに対してステートマシン図を描画できますか?
- 17. 1対1シングルトンの関係を作成する方法
- 18. StructureMapシングルトン
- 19. シングルトン、4
- 20. WPF - シングルトン
- 21. シングルトン(Python)
- 22. PHP、シングルトンのオートローディング
- 23. WCFサービスとシングルトン
- 24. サービス用EWSシングルトン
- 25. シングルトンのタグインターフェイス
- 26. ASP.NETのシングルトン
- 27. シングルトン、工場、オートローダー
- 28. シングルトンとのデッドロックエラー
- 29. 排除シングルトン
- 30. リポジトリ層シングルトン
私は両方のアンチパターンについて検討するつもりですが、サービスロケータがわずかに好ましいと私は同意します。最適な解決策は、適切な依存性注入を実装することです。 –
私はDIから理解しているものから、シングルトンに直接アクセスしていたオブジェクトすべてに、シングルトンオブジェクトへの参照を直接持たせる必要はありませんか? – djcouchycouch
はい、コンストラクタへのパラメータとして与える必要があります(コンストラクタインジェクションを使用する場合、これは通常「依存関係を宣言する」と呼ばれます)。少し簡単にするために、Inversion of Controlコンテナを使用することができます。 Google Guiceを見てみましょう。 –