scala – Play Framework依赖注入Object vs @Singleton Class

Play Framework 2.4支持Google Guice依赖注入

使用的优点是什么

@Singleton class A

代替

object A

对于单身人士?

解决方法

如果A没有依赖关系,我可以看到在对象上使用@Singleton类的三个优点:

>如果你想测试A,并将其声明为@Singleton类,你可以选择子类化它来模拟测试中的一些函数,而对象则不可能.
>如果使用对象,A的客户端直接引用它是非常诱人的,导致强耦合系统,但使用@Singleton类强制他们考虑实例化A的位置,可能导​​致更加分离的设计.
>如果您以后改变主意,并允许多个A实例,那么如果您选择使用@Singleton类,重构将更容易.

但是,如果A具有依赖关系,则使用@Singleton类允许它们在构造上依赖注入,而使用对象时,只有将依赖关系声明为可变(例如:使用getter / setter方法的var)时才可以使用它.

相关文章

Scala的存在类型 存在类型也叫existential type,是对类型做抽象的一种方法。可以在你不知道具体类型的...
文章目录Option和SomeOption和NoneOption和模式匹配 在java 8中,为了避免NullPointerException,引入了...
文章目录泛类型型变协变逆变不变类型上界类型下界内部类抽象类型复合类型自类型隐式参数隐式转换多态方...
Scala的自定义类型标记 Scala中有很多千奇百怪的符号标记,看起来是那么的独特,就像是一杯dry martini...
文章目录面向对象的scalaUnified TypesClassesTraits 面向对象的scala 我们知道Scala是一种JVM语言,可...
文章目录默认参数值命名参数 scala的参数有两大特点: 默认参数值 命名参数 默认参数值 在Scala中,可以...