为什么我们需要对 java 或 Android 中的单例 类 进行依赖注入?
Why do we need Dependency Injection for singleton classes in java or Android?
例如,如果我使用 Dagger 注入 (Otto)Bus 对象,那么我将不得不编写更多代码行来指定在接口中注入它的位置。
另一方面,如果我只使用单例 class 到 return 总线实例,那么我不需要像在依赖注入的情况下那样写那么多代码行。
所以我的问题是"Why or how is it better to use Dependency Injection to inject Singleton class instances?"
首先,DI 将减少您必须调用以使用所需依赖项设置实例的样板文件数量。更少的代码意味着更高的可读性。为此付出的代价是所涉及的配置,但是对于大型项目来说,这是值得的。
其次,当您对您的应用进行 运行 自动化测试时,您可以从 DI 中获益。您将能够用模拟替换标准的单例实现,您可以控制并使用模拟来模拟涵盖所有情况所需的不同场景。
话虽如此,我也认为 DI 只适合大型 Android 项目或中大型 EE 项目。否则它会增加一些不必要的复杂性恕我直言。
例如,如果我使用 Dagger 注入 (Otto)Bus 对象,那么我将不得不编写更多代码行来指定在接口中注入它的位置。
另一方面,如果我只使用单例 class 到 return 总线实例,那么我不需要像在依赖注入的情况下那样写那么多代码行。
所以我的问题是"Why or how is it better to use Dependency Injection to inject Singleton class instances?"
首先,DI 将减少您必须调用以使用所需依赖项设置实例的样板文件数量。更少的代码意味着更高的可读性。为此付出的代价是所涉及的配置,但是对于大型项目来说,这是值得的。
其次,当您对您的应用进行 运行 自动化测试时,您可以从 DI 中获益。您将能够用模拟替换标准的单例实现,您可以控制并使用模拟来模拟涵盖所有情况所需的不同场景。
话虽如此,我也认为 DI 只适合大型 Android 项目或中大型 EE 项目。否则它会增加一些不必要的复杂性恕我直言。