是否有必要用Dagger 2注射所有东西?

时间:2018-04-20 06:11:09

标签: java android dependency-injection dagger-2

我是Dagger的新手。我对于用匕首注射什么和不注意什么感到困惑。我知道有必要使用Dagger注入Android Framework类和我的类,但是是否有必要使用dagger注入基本的Java类,如String,StringBuilder等。

 public String create(Context context) // Creating Simple objects in the method itself
{
 StringBuilder builder=new StringBuilder();
    ....
   return builder.toString();
}


public String create(Context context,StringBuilder builder) // Injecting everything
 {
....
return builder.toString();
}

2 个答案:

答案 0 :(得分:1)

你不需要注射任何东西。您可以在方法中创建任何您喜欢的内容。在方法内部只是普通的旧Java代码。

当您在该方法中创建的内容不关心特定值时,仅将某些内容作为参数注入,但只需要 a 值。

关于注入公共类的事情是你需要对它们进行限定:这里你注入的字符串不一定与你在那里注入的字符串相同。因此,您需要一些方法来消除它们的歧义,例如注释。

但是,如果你正在注入所有东西,那么你最终会得到大量的注释。有时候你确实想要这样做;有时不。在编写更多代码时,您会感受到这种感觉。

答案 1 :(得分:0)

采用不同的方式,注入的重要部分是它允许您管理对象的状态(包括生命周期,如果您需要)。

因此,如果你有一个没有状态的类(例如一个提供一些无状态函数的Util类),你就不应该注入它。

如果你的StringBuilder类不需要共享状态(即跨两个对象使用相同的StringBuilder),那么你不需要注入它。