关于服务定位器模式

Pau*_*nta 6 c++ dependency-injection service-locator

服务定位器似乎是一个非常有用的概念,我想在我的应用程序中实现它.但是,我有一些关于如何实现它以及如何与其他编程范例一起使用的问题.

  1. SL应该管理它存储的服务吗?也就是说,当SL被破坏时,它是否也会破坏服务本身,还是应该将其留给注册服务的人?

  2. 那么依赖注入呢?既然我有一个SL,那么将SL作为参数传递还是应该全局访问?毕竟,DI的整个目的的大部分也被SL覆盖了,我不想用一个更多的参数来混淆我的很多功能.

Phi*_*ler 9

你会认为我写这篇文章(我没有),考虑我经常提到它:

服务定位器是一种反模式

依赖注入使您的依赖项显式化.服务位置将它们隐藏在实现中,并对您的定位器创建硬依赖.

  • C#和Java的精彩文章,但不是很好的文章C++.C++提供了构造(例如重载的new和delete操作符),无法注入依赖项. (2认同)