gpt4 book ai didi

scala - Play Framework 依赖注入(inject)对象与 @Singleton 类

转载 作者:行者123 更新时间:2023-12-02 19:35:28 24 4
gpt4 key购买 nike

Play Framework 2.4 支持 Google Guice 依赖注入(inject)

使用有什么好处

@Singleton class A

而不是

object A

对于单例?

最佳答案

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

  1. 如果您想测试 A,并将其声明为 @Singleton 类,您可以选择对其进行子类化以模拟您的某些函数。测试,而对于对象来说这是不可能的。

  2. 如果使用objectA的客户端很容易直接引用它,从而导致强耦合系统,但是使用 @Singleton class 迫使他们思考 A 在哪里实例化,这可能会导致更加解耦的设计。

  3. 如果您后来改变主意,并允许使用 A 的多个实例,并且选择使用 @Singleton 类,重构会容易得多.

如果A具有依赖项,但是,使用@Singleton class允许它们在构造时进行依赖项注入(inject),而对于对象,只有声明依赖项才可能实现作为可变的(例如:具有 getter/setter 方法的 var)。

关于scala - Play Framework 依赖注入(inject)对象与 @Singleton 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33843706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com