首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解java中的DI

理解java中的DI
EN

Stack Overflow用户
提问于 2013-01-23 17:21:35
回答 2查看 184关注 0票数 1

可能重复: 理解对DI框架的需求

我读过几篇关于DI的文章,并与几位专业人士交谈过。我不明白的是,如何通过DI来解耦对象。下面的文章也描述了一个场景,但我不明白Spring如何帮助解耦PayrollApplication?解耦是用多态性而不是DI来完成的。绝对有其他用途..。

http://www.developer.com/java/dependency-injection-in-existing-java-code.html

暗示和拒绝就行了。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-23 17:57:37

脱钩不是什么都没有的概念。在本文中,只使用多态(“Design2”)在一定程度上将对象解耦,但是PayrollApplication类在编译PayrollApplication时仍然必须了解雇员实现。

Employee实现是PayrollApplication的依赖项,通过依赖注入,您可以实现更高级别的解耦:您可以编译PayrollApplication,以便它只引用Employee接口,并且只在稍后提供雇员实现(可能由另一个团队/组织编写)。

还可以查看有关依赖项注入的维基百科

依赖注入模式的主要目的是允许在运行时(或通过配置文件)选择给定依赖接口的多个实现,而不是在编译时。该模式对于在测试时提供复杂组件的存根测试实现特别有用,但通常用于定位插件组件或定位和初始化软件服务。

票数 1
EN

Stack Overflow用户

发布于 2013-01-23 17:28:06

依赖注入将对象解耦,因为不是直接实例化具体的类,而是Spring为您做的。使用DI的替代方法是,您通常会创建对接口的引用,但仍然必须直接实例化对象。您的代码中仍然引用了concreate类。

编辑:忘记提到您可以使用Factory模式将实现从代码中删除,但是接下来您只需将其移到Factory中。春天就像一个巨大的,通用的工厂所有的豆类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14485594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档