Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dependency injection 当并非总是使用所有依赖项时,如何应用依赖项注入?_Dependency Injection_Dependencies_Logic_Code Injection - Fatal编程技术网

Dependency injection 当并非总是使用所有依赖项时,如何应用依赖项注入?

Dependency injection 当并非总是使用所有依赖项时,如何应用依赖项注入?,dependency-injection,dependencies,logic,code-injection,Dependency Injection,Dependencies,Logic,Code Injection,我正在努力理解DI。因为我还没有编写单元测试,所以对我来说最大的优势是类的解耦和依赖关系的管理/控制 但有一个问题:如果我有一个类a(控制器),它实例化了类B(监听器),而类B在某些情况下会实例化类C(邮件器),该怎么办 根据DI原则,我必须创建C并将其传递给B。如果在请求期间我不需要C怎么办?我必须先为依赖注入创建一些逻辑吗 根据DI原则,我必须创建C并将其传递给B。如果在请求期间我不需要C怎么办?我必须先为依赖注入创建一些逻辑吗 这应该不是问题,因为: 注入构造函数应该只接收依赖项 当您这样

我正在努力理解DI。因为我还没有编写单元测试,所以对我来说最大的优势是类的解耦和依赖关系的管理/控制

但有一个问题:如果我有一个类a(控制器),它实例化了类B(监听器),而类B在某些情况下会实例化类C(邮件器),该怎么办

根据DI原则,我必须创建C并将其传递给B。如果在请求期间我不需要C怎么办?我必须先为依赖注入创建一些逻辑吗

根据DI原则,我必须创建C并将其传递给B。如果在请求期间我不需要C怎么办?我必须先为依赖注入创建一些逻辑吗

这应该不是问题,因为:

注入构造函数应该只接收依赖项


当您这样做时,对象创建速度非常快,而且不管消费者是否总是使用其所有依赖项。

好的,谢谢,它帮助我更好地掌握了DI的实际方法。然而,对于我自己的应用程序,我仍然存在一个问题,即某些对象(如客户机对象)是许多类的依赖项。所以我把这些东西传来传去。我想知道这是否意味着我有一个错误的概念?这很难评论。你必须给出具体的例子。我的应用程序生成一个显示用户数据的用户界面。为此,我需要一个用户对象。因为这个用户对象是应用程序的核心部分,所以我在不同的地方需要它,比如发送电子邮件,或者在UI中显示用户信息。因此,我正在“四处”传递对象。这也导致了循环依赖;控制器依赖项需要用户对象,但用户对象需要控制器的属性。如果这仍然太抽象,我可能会用我的代码示例开始一个新问题。请确实开始一个新问题。请随意在此处发表评论,链接到新问题。在此,提前感谢: