しばらく前に、Dependency InjectionパターンとService Locatorパターンの記事を書きました。
この中で、私はService Locatorパターンは次の点でDependency Injectionパターンに劣ると記載しました。
- 本来不要であるServiceLocatorへの依存が発生してしまう
- 依存関係が分かりにくくなる
- テストが困難になる
詳細は先のリンクの記事を参照していただきたいのですが、3.について次のような意見を頂いたため再考してみました。
「Service Locatorを利用するとテストの並行実行性が保てないのは、Service Locatorが静的な実装になっているからで、インスタンスを利用すれば良いのでないか?」
なお本エントリーは、元々先のリンク先の末尾に記載していたものがベースとなっていますが、一旦削除し独立してまとめ直しました。
続きを読む