Singleton实现接口的优势

时间:2013-08-01 07:58:42

标签: java design-patterns interface singleton

我在一些博客中读到单身阻碍测试,因为它导致高耦合,并且无法替换模拟代替它,所以解决方案是实现一个接口和在参数中传递它。我没有博客链接,一旦找到它就会附上它。但由于static getInstance()方法无法实现。

在Singleton Pattern中实现接口有什么优势吗?

public interface SingletonInterface{

   //some methods
}

public class Singleton1 implements SingletonInterface{

   //Usual singleton methods 
}

1 个答案:

答案 0 :(得分:7)

  

但是由于静态的getInstance()方法是不可能的。

不,完全相反。关键是只有非常有限的代码需要知道它是一个单例。其他代码可以只使用该接口,您可以使用不同的实现进行测试,甚至可以在以后而不是将生产实现更改为单例,而不必更改它。

public void foo(SingletonInterface x) {
    // This code doesn't know it's a singleton. You can create fakes for testing.
}

...

// This code *does* know it's a singleton. Boo! Gradually refactor away...
foo(Singleton1.getInstance());