服务定位器和依赖注入容器到底什么区别?

发布于 2022-09-05 20:50:54 字数 123 浏览 25 评论 0

发现yii手册中讲到的依赖注入容器和服务定位器好像 不明白为什么还搞两个出来 这两个到底什么区别? 看了半天 依赖注入容器倒是看懂了 就是不理解这个服务定位器具体什么意思 感觉和普通工厂模式不是一样么 然而laravel手册并不赞同

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

溇涏 2022-09-12 20:50:57

依赖注入容器是容器把依赖注入到你的类,你的类是不依赖容器的。

服务定位器是你的类直接拿了一个容器实例,然后自己从容器里取依赖的对象,你的类也就依赖了容器。

服务定位器通常是个反模式,因为类/方法的接口隐藏了实际的依赖。

很酷又爱笑 2022-09-12 20:50:56

个人理解:

1.服务定位器其实是有点类似容器的实现方式,通过把组件注册到容器中去,在使用的时候通过唯一标识或者别名拿去出来使用而已。这个只要维护好组件里面的实现,不需要去管容器的实现,使用时候注册到容器,拿出来直接使用,其实也是一个解耦的实现,更方便的维护。
2.依赖注入也是解耦,就是让类的依赖性降低,维护成本降低,比如说你的一个数据库操作类在构造函数内实例化数据库类,如果依赖注入的实现,那就是 __construct(Database $database)注入对象,避免在内部实例化,降低维护成本。
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文