依赖注入能不能理解为:类不创建对象,对象以传入的形式来使用

2019-03-29 09:59:06 +08:00
 wythechen
3507 次点击
所在节点    Java
16 条回复
Mutoo
2019-03-29 10:03:00 +08:00
给你修改一下:逻辑(类)不创建或直接引用服务(依赖),服务以传入的形式被使用。
Mithrandir
2019-03-29 10:04:36 +08:00
阔以这么理解
vindurriel
2019-03-29 10:20:45 +08:00
更有意思的问题是 为什么要注入依赖
mooncakejs
2019-03-29 10:26:02 +08:00
要衣服的时候,本来要去柜子里找,现在喊一声就好,老妈会送过来,但是你只能决定衣服的类型(接口),老妈帮你决定衣服的牌子(实现)。
这里可以实现单例,你要一个对象,你弟弟也要一个对象,老妈有办法把同一个对象同时给你们,而不需要你们分别去找(new)。
airfling
2019-03-29 10:27:38 +08:00
@mooncakejs 这不就是共享对象了吗
WordTian
2019-03-29 10:31:30 +08:00
类不直接创建对象(类的变量名,方法名需遵守约定)
传入使用反射创建类对象所需的信息(类名,类中的变量值)
通过这些信息创建类的对象
demonzoo
2019-03-29 10:32:41 +08:00
@mooncakejs 兄弟二人共用一个对象?年轻人思想很前卫啊。。。
lihongjie0209
2019-03-29 10:43:46 +08:00
依赖注入是全局的一个 ioc = map<beanName, beanInstance>, 你可以不用注解进行注入, 直接引用 ioc.get(xxxx), 依赖注入的注解只是一个语法糖而已
mooncakejs
2019-03-29 10:47:06 +08:00
@demonzoo 兄弟?老爹要也给他同一个啊。
mooncakejs
2019-03-29 10:48:09 +08:00
@airfling 是共享,同时老妈还能决定 要不要给他们同一个对象或者分别一个对象。这是父母包办啊。
Inside
2019-03-29 11:19:00 +08:00
依赖注入就是我一掏粪的,你给我一勺子我能掏,给我一铲子我也能掏,只要你给个能掏粪的东西就行,你给啥我用啥。
mamahaha
2019-03-29 11:42:36 +08:00
干就完了,先上车后补票。
anofac
2019-03-29 11:43:18 +08:00
@Inside 哈哈哈,生动形象

借来拿到去公司码代码场景比喻一下,我需要一台可以码代码的电脑:
new 对象就是我自己选牌子型号,甚至我自己组装(要 new 出来的对象有别的依赖需要传入时,我可以自己选择传入什么)。
依赖注入就是老板给什么我用什么,有钱的老板给我 MAC 用,没钱的老板给我渣想垃圾台式用。甚至延伸一下老板可以做到,效益好的时候给我用 MAC,效益不好的时候把 MAC 拿去卖了(对象回收),给我换个渣想。。。(各种代理技术)
kaneg
2019-03-29 11:53:49 +08:00
依赖注入本质上是思维的转变:不要管对象从哪里来,只管使用便是。
ooee2016
2019-03-29 12:11:56 +08:00
电脑主板?
zhazi
2019-04-08 16:47:59 +08:00
依赖注入的思想是面向接口编程,使用其 hight level 的抽象而不依靠 low level 的实现,达到松耦合的目的,楼上这群都在说什么呢,重学几遍面向对象再来回答吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/549784

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX