Play Framework 依赖注入对象 vs @Singleton Class

Play Framework dependency injection Object vs @Singleton Class

Play Framework 2.4 支持 Google Guice 依赖注入

使用

有什么好处
@Singleton class A

而不是

object A

对于单身人士?

如果 A 没有依赖项,我可以看到使用 @Singleton class 优于 object 的三个优点:

  1. 如果您想测试 A,并将其声明为 @Singleton class,您可以选择将其子类化以模拟测试中的某些函数,而这object.

  2. 是不可能的
  3. 如果使用objectA的客户端很容易直接引用它,导致系统强耦合,但是使用@Singleton class迫使他们考虑实例化 A 的位置,可能会导致更解耦的设计。

  4. 如果您后来改变主意,允许 A 的多个实例,那么如果您选择使用 @Singleton class.[=24,重构会容易得多=]

如果 A 有依赖关系,但是,使用 @Singleton class 允许它们在构造时进行依赖注入,而对于对象,这只有在您将依赖关系声明为可变时才有可能(例如:a var 使用 getter/setter 方法)。