我知道依赖注入原理都是关于解耦代码的。不是在类中创建新实例,而是注入它们,这使它们松散耦合。
现在,如果我必须传递一组将在整个应用程序中通过多个类使用的对象,我可以创建一个容器(通常称为依赖注入容器)。
这正是我正在做的,因为我必须传递一个配置对象、一个记录器对象、一个翻译器对象等,它们将在我的应用程序的几个类实例中使用。我将整个容器传递给几个类,即使并非所有类都需要访问容器中的所有对象。这使我想到了以下问题:如果我创建一个全局注册表并将对象放入其中,然后像 Registry::getInstance()->get('logger'); 一样检索它们,有什么区别?? 无论我使用全局注册表还是依赖容器,类实例都可以访问容器或注册表中的所有对象,即使他们不需要查看/访问所有对象。
结论:如果我沿着我的类或全局注册表传递依赖注入容器有什么区别?