是否有理由在Java中的另一个类中保持对Singleton实例的引用?

nba*_*lle 3 java singleton

这可能是一个相当愚蠢的问题,但今天早些时候我遇到了一些代码,其中一个外部类存储了对Singleton类实例的引用(在私有字段中),并且使用了这个引用而不是从Singleton类中获取实例每次.

起初它看起来像是糟糕的设计,因为它为一个类添加了一个字段,但是还有另一个原因你不应该这样做(或者应该这样做)?

小代码示例说明:

enum SomeSingletonObject {
    INSTANCE;

    public void someMethod() {...}
}

class AnotherObject {
    private SomeSingletonObject sso;

    public AnotherObject() {
        this.sso = SomeSingletonObject.INSTANCE;
    }

    public void someMethod() {
        sso.someMethod();
        // instead of 
        // SomeSingletonObject.INSTANCE.someMethod();
    }
}
Run Code Online (Sandbox Code Playgroud)

cdh*_*wie 7

在这个例子中,不,没有任何好处.

但是,如果您使用依赖项注入,其中您的类将其依赖项作为构造函数参数,则传入单例实例可能非常有用,在这种情况下,您将没有选项,只能存储引用.