解决方法
如果A没有依赖关系,我可以看到在对象上使用@Singleton类的三个优点:
>如果你想测试A,并将其声明为@Singleton类,你可以选择子类化它来模拟测试中的一些函数,而对象则不可能.
>如果使用对象,A的客户端直接引用它是非常诱人的,导致强耦合系统,但使用@Singleton类强制他们考虑实例化A的位置,可能导致更加分离的设计.
>如果您以后改变主意,并允许多个A实例,那么如果您选择使用@Singleton类,重构将更容易.
但是,如果A具有依赖关系,则使用@Singleton类允许它们在构造上依赖注入,而使用对象时,只有将依赖关系声明为可变(例如:使用getter / setter方法的var)时才可以使用它.