Play Framework 2.4支持Google Guice依赖注入
使用
有什么好处@Singleton class A
而不是
object A
单身人士?
答案 0 :(得分:5)
如果A没有依赖关系,我可以看到使用@Singleton class
优于object
的三个优势:
如果您想测试A
,并将其声明为@Singleton class
,您可以选择将其子类化为模拟测试中的某些函数,而这是不可能的object
。
如果您使用object
,A
的客户直接引用它会导致强耦合系统,但使用@Singleton class
迫使他们思考关于实例化A
的地方,可能会导致更加分离的设计。
如果您以后改变主意,并允许A
的多个实例,那么如果您选择使用@Singleton class
,则重构会更容易。
如果A
具有依赖关系,则使用@Singleton class
允许它们在构造上注入依赖关系,而使用对象时,只有将依赖关系声明为可变(例如:a {{ 1}}使用getter / setter方法)。