V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wythechen
V2EX  ›  Java

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

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

    借来拿到去公司码代码场景比喻一下,我需要一台可以码代码的电脑:
    new 对象就是我自己选牌子型号,甚至我自己组装(要 new 出来的对象有别的依赖需要传入时,我可以自己选择传入什么)。
    依赖注入就是老板给什么我用什么,有钱的老板给我 MAC 用,没钱的老板给我渣想垃圾台式用。甚至延伸一下老板可以做到,效益好的时候给我用 MAC,效益不好的时候把 MAC 拿去卖了(对象回收),给我换个渣想。。。(各种代理技术)
    kaneg
        14
    kaneg  
       2019-03-29 11:53:49 +08:00 via iPhone
    依赖注入本质上是思维的转变:不要管对象从哪里来,只管使用便是。
    ooee2016
        15
    ooee2016  
       2019-03-29 12:11:56 +08:00
    电脑主板?
    zhazi
        16
    zhazi  
       2019-04-08 16:47:59 +08:00 via Android
    依赖注入的思想是面向接口编程,使用其 hight level 的抽象而不依靠 low level 的实现,达到松耦合的目的,楼上这群都在说什么呢,重学几遍面向对象再来回答吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3108 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 13:31 · PVG 21:31 · LAX 05:31 · JFK 08:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.