为什么java或Android中的单例类需要依赖注入?

为什么java或Android中的单例类需要依赖注入?,java,android,singleton,dagger,otto,Java,Android,Singleton,Dagger,Otto,例如,如果我正在使用Dagger注入(Otto)总线对象,那么我将不得不编写更多的代码行来指定在接口中注入它的位置 另一方面,如果我只是使用一个单例类来返回总线实例,那么我就不需要像在依赖注入的情况下那样编写那么多行代码 所以我的问题是“为什么或者如何更好地使用依赖项注入来注入单例类实例?”首先,DI将减少为设置具有所需依赖项的实例而必须调用的样板文件数量。更少的代码意味着更好的可读性。为此付出的代价是所涉及的配置,但对于大型项目来说,这是值得的 其次,当您在应用程序上运行自动化测试时,您可以从

例如,如果我正在使用Dagger注入(Otto)总线对象,那么我将不得不编写更多的代码行来指定在接口中注入它的位置

另一方面,如果我只是使用一个单例类来返回总线实例,那么我就不需要像在依赖注入的情况下那样编写那么多行代码


所以我的问题是“为什么或者如何更好地使用依赖项注入来注入单例类实例?”

首先,DI将减少为设置具有所需依赖项的实例而必须调用的样板文件数量。更少的代码意味着更好的可读性。为此付出的代价是所涉及的配置,但对于大型项目来说,这是值得的

其次,当您在应用程序上运行自动化测试时,您可以从DI中获益。您将有能力用模拟来取代标准的单例实现,您可以控制并使用模拟来模拟不同的场景,以覆盖所有情况


话虽如此,我也认为DI只适合大规模Android项目,或中大型EE项目。否则,它会增加一些不必要的复杂性

首先,DI将减少为设置具有所需依赖项的实例而必须调用的样板文件数量。更少的代码意味着更好的可读性。为此付出的代价是所涉及的配置,但对于大型项目来说,这是值得的

其次,当您在应用程序上运行自动化测试时,您可以从DI中获益。您将有能力用模拟来取代标准的单例实现,您可以控制并使用模拟来模拟不同的场景,以覆盖所有情况

话虽如此,我也认为DI只适合大规模Android项目,或中大型EE项目。否则,它会增加一些不必要的复杂性