加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

依赖注入 – 方法或构造函数中的注入依赖关系?

发布时间:2020-12-14 00:48:11 所属栏目:百科 来源:网络整理
导读:依赖注入似乎是一件好事.一般来说,依靠是否需要注入方法,还是将其注入课堂的教唆者? 请参阅下面的示例来演示注入相同依赖关系的两种方式. //Inject the dependency into the methods that require ImportantClassClass Something { public Something() { //
依赖注入似乎是一件好事.一般来说,依靠是否需要注入方法,还是将其注入课堂的教唆者?

请参阅下面的示例来演示注入相同依赖关系的两种方式.

//Inject the dependency into the methods that require ImportantClass
Class Something {

    public Something()
    {
         //empty
    }

    public void A() 
    {
         //do something without x
    }

    public void B(ImportantClass x)
    {
         //do something with x
    }

    public void C(ImportantClass x)
    {
         //do something with x
    }
}

//Inject the dependency into the constructor once
Class Something {
    private ImportantClass _x
    public Something(ImportantClass x)
    {
         this._x = x;
    }

    public void A() 
    {
         //do something without x
    }

    public void B()
    {
         //do something with this._x
    }

    public void C()
    {
         //do something with this._x
    }

}
构造器注入的主要优点是它允许您的字段标记为最终.例如:
class Foo {
    private final Bar _bar;

    Foo(Bar bar) {
        _bar=bar;
    }
}

以下页面有一个很好的pro和con的列表:Guice Best Practices:

方法注射

>不是现场注射
>只有对某些奇怪的情况有效的东西

构造器注入

>字段可以是最终的!>注射不可能被跳过>轻松查看依赖关系一目了然>这是建设的想法是什么> – 无可选注射> – 当DI库无法实现本身时无用> – 子类需要“知道”他们的超类所需的注入> – 不太方便测试,只有“关心”其中一个参数

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读