我理解依赖注入原则的主要目的是为了解耦代码。在类中,而不是使用“new”实例化对象,将对象注入进去,达到松散耦合。
现在如果我需要传递一组对象,在整个应用程序的多个类中使用,我可以创建一个容器(通常称为依赖注入容器)。
这正是我正在做的事情,因为我必须传递配置对象、记录器对象、翻译器对象等,它们将被应用程序中多个类的实例使用。我通过多个类传递整个容器,即使并非所有类都需要访问容器中的所有对象。这引出了以下问题:如果我创建一个全局注册表,并将对象放入其中,然后像Registry::getInstance()->get('logger')这样检索它们,那么有什么区别呢?无论我使用全局注册表还是依赖容器,类实例都可以访问容器或注册表中的所有对象,即使它们不需要看到或访问其中的所有内容。
结论:如果我在类之间传递依赖注入容器或全局注册表有什么区别?
现在如果我需要传递一组对象,在整个应用程序的多个类中使用,我可以创建一个容器(通常称为依赖注入容器)。
这正是我正在做的事情,因为我必须传递配置对象、记录器对象、翻译器对象等,它们将被应用程序中多个类的实例使用。我通过多个类传递整个容器,即使并非所有类都需要访问容器中的所有对象。这引出了以下问题:如果我创建一个全局注册表,并将对象放入其中,然后像Registry::getInstance()->get('logger')这样检索它们,那么有什么区别呢?无论我使用全局注册表还是依赖容器,类实例都可以访问容器或注册表中的所有对象,即使它们不需要看到或访问其中的所有内容。
结论:如果我在类之间传递依赖注入容器或全局注册表有什么区别?