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

前端之家收集整理的这篇文章主要介绍了依赖注入 – 方法或构造函数中的注入依赖关系?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
依赖注入似乎是一件好事.一般来说,依靠是否需要注入方法,还是将其注入课堂的教唆者?

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

//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库无法实现本身时无用> – 子类需要“知道”他们的超类所需的注入> – 不太方便测试,只有“关心”其中一个参数

原文链接:https://www.f2er.com/javaschema/281859.html

猜你在找的设计模式相关文章