Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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
Spring 依赖项注入与工厂或目录_Spring_Design Patterns_Dependency Injection_Inversion Of Control_Guice - Fatal编程技术网

Spring 依赖项注入与工厂或目录

Spring 依赖项注入与工厂或目录,spring,design-patterns,dependency-injection,inversion-of-control,guice,Spring,Design Patterns,Dependency Injection,Inversion Of Control,Guice,我一直在想,是否有人在任何非玩具项目中使用DI/IoC,他可以选择实现风格(而不是由库或开发需求强制实施) 毕竟,如果我们想要一个类的单个实例,工厂就是完美的机制;如果我们想要一个特定的实例,目录服务就是完美的机制 那么,在其中添加Spring/Guice/等并为我们自己创建另一个依赖项有什么大不了的呢?(或者我完全不理解他们的DI方法…) 谢谢。没有提到框架,只是声称: 高级模块不应依赖于低级模块。两者都应该依赖于抽象 抽象不应该依赖于细节。细节应该取决于抽象 控制反转(IoC)原则也与减少软

我一直在想,是否有人在任何非玩具项目中使用DI/IoC,他可以选择实现风格(而不是由库或开发需求强制实施)

毕竟,如果我们想要一个类的单个实例,工厂就是完美的机制;如果我们想要一个特定的实例,目录服务就是完美的机制

那么,在其中添加Spring/Guice/等并为我们自己创建另一个依赖项有什么大不了的呢?(或者我完全不理解他们的DI方法…)

谢谢。

没有提到框架,只是声称:

  • 高级模块不应依赖于低级模块。两者都应该依赖于抽象
  • 抽象不应该依赖于细节。细节应该取决于抽象
  • 控制反转(IoC)原则也与减少软件中类之间的耦合有关

    有许多模式用于保持类的低耦合,并遵循DI或IoC原则。如何实现这一目标是你的责任。是其中的一些

    毕竟,如果我们想要一个类的单个实例,工厂就是完美的机制;如果我们想要一个特定的实例,目录服务就是完美的机制

    这家工厂被认为是世界上最大的工厂之一

    我一直在想,是否有人在任何非玩具项目中使用DI/IoC,他可以选择实现风格(而不是由库或开发需求强制实施)

    我看到很多使用DI\IoC容器\框架的企业应用程序。这些框架提供了一个关注对象创建(like)、对象生存期(like)、注入依赖项、保存所有对象列表(like)的基础设施

    那么,在其中添加Spring/Guice/等并为我们自己创建另一个依赖项有什么大不了的呢

    当您使用IoC容器时,您的类对它没有依赖性IoC容器只是基础结构层的一部分。


    我认为,避免使用IoC容器的唯一原因是当公司的规则和协议限制您使用第三方库时。

    DI还将帮助您进行生命周期管理,并允许您更接近于声明依赖项,而不是手动获取依赖项。也就是说,如果您对所描述的模式更熟悉,我看不出它们有什么错。可测试性是DI的主要优点:您可以在单元测试中注入模拟依赖项。我想说,现在,几乎所有非玩具Java项目都使用DI:Spring促进DI,JavaEE和CDI促进DI。阅读DI的动机。酷!谢谢你的回答!。。。再次感谢你!那些链接非常有用!