Java 我应该使用DI和RoboGuice注入所有内容吗?

Java 我应该使用DI和RoboGuice注入所有内容吗?,java,android,dependency-injection,roboguice,Java,Android,Dependency Injection,Roboguice,我目前正在使用RoboGuice开发一些应用程序。我的问题是:我真的应该注射所有的东西吗?我创建的每个类都应该有自己的契约接口吗 在我为一个类“BatteryStatusUtil”命名接口时遇到麻烦,该类返回有关电池电量的信息,诸如此类。我在某个地方读到“如果你不能为你的界面命名,你可能不需要界面” 如果我使用依赖项注入太多,请纠正我的错误,或者当我没有ma接口的“更通用”名称时,请给我一些关于命名接口的提示(如类FastCar,接口Car) 我真的应该注射所有东西吗 不,绝对不是。从依赖项注入

我目前正在使用
RoboGuice
开发一些应用程序。我的问题是:我真的应该注射所有的东西吗?我创建的每个类都应该有自己的契约接口吗

在我为一个类“
BatteryStatusUtil
”命名接口时遇到麻烦,该类返回有关电池电量的信息,诸如此类。我在某个地方读到“如果你不能为你的界面命名,你可能不需要界面”

如果我使用依赖项注入太多,请纠正我的错误,或者当我没有ma接口的“更通用”名称时,请给我一些关于命名接口的提示(如类
FastCar
,接口
Car

我真的应该注射所有东西吗

不,绝对不是。从依赖项注入的角度来看,有两种类型:

若你们不能为你们的界面命名,你们可能不需要界面

听起来有点像,虽然我不确定你的报价来自哪里。但我想换一种说法:

若你们不能为你们的界面命名,你们可能不得不重新考虑你们的抽象

例如,如果很难想出一个名字,你可能违反了原则


尽管DI本身并不强迫您使用接口,但它是保持代码可测试性的有效方法。您的
BatteryStatusUtil
可能是一个很好的例子,因为该类可能会直接挂接到您的OS API中,并且为了能够测试
BatteryStatusUtil
的任何使用者,您必须模拟该实用程序类,因为您不希望单元测试依赖于您的操作系统,否则将很难以自动方式模拟电池状态。