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
的三个优点:
如果您想测试 A
,并将其声明为 @Singleton class
,您可以选择将其子类化以模拟测试中的某些函数,而这object
.
是不可能的
如果使用object
,A
的客户端很容易直接引用它,导致系统强耦合,但是使用@Singleton class
迫使他们考虑实例化 A
的位置,可能会导致更解耦的设计。
如果您后来改变主意,允许 A
的多个实例,那么如果您选择使用 @Singleton class
.[=24,重构会容易得多=]
如果 A
有依赖关系,但是,使用 @Singleton class
允许它们在构造时进行依赖注入,而对于对象,这只有在您将依赖关系声明为可变时才有可能(例如:a var
使用 getter/setter 方法)。
Play Framework 2.4 支持 Google Guice 依赖注入
使用
有什么好处@Singleton class A
而不是
object A
对于单身人士?
如果 A 没有依赖项,我可以看到使用 @Singleton class
优于 object
的三个优点:
如果您想测试
A
,并将其声明为@Singleton class
,您可以选择将其子类化以模拟测试中的某些函数,而这object
. 是不可能的
如果使用
object
,A
的客户端很容易直接引用它,导致系统强耦合,但是使用@Singleton class
迫使他们考虑实例化A
的位置,可能会导致更解耦的设计。如果您后来改变主意,允许
A
的多个实例,那么如果您选择使用@Singleton class
.[=24,重构会容易得多=]
如果 A
有依赖关系,但是,使用 @Singleton class
允许它们在构造时进行依赖注入,而对于对象,这只有在您将依赖关系声明为可变时才有可能(例如:a var
使用 getter/setter 方法)。