Play Framework依赖注入Object vs @Singleton Class

时间:2015-11-21 13:08:20

标签: scala playframework guice

Play Framework 2.4支持Google Guice依赖注入

使用

有什么好处
@Singleton class A

而不是

object A

单身人士?

1 个答案:

答案 0 :(得分:5)

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

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

  2. 如果您使用objectA的客户直接引用它会导致强耦合系统,但使用@Singleton class迫使他们思考关于实例化A的地方,可能会导致更加分离的设计。

  3. 如果您以后改变主意,并允许A的多个实例,那么如果您选择使用@Singleton class,则重构会更容易。

  4. 如果A具有依赖关系,则使用@Singleton class允许它们在构造上注入依赖关系,而使用对象时,只有将依赖关系声明为可变(例如:a {{ 1}}使用getter / setter方法)。