gpt4 book ai didi

java - 单例实现接口(interface)的优势

转载 作者:搜寻专家 更新时间:2023-11-01 01:53:35 29 4
gpt4 key购买 nike

我在一些博客上看到,单例阻碍测试,因为它会导致高耦合,并且无法用mocks代替它,所以解决方案是实现一个接口(interface)和在参数中传递它。我没有指向博客的链接,一旦找到就会附上。但是由于 static getInstance() 方法,这是不可能的。

那么在单例模式中实现接口(interface)有什么好处吗?

public interface SingletonInterface{

//some methods
}

public class Singleton1 implements SingletonInterface{

//Usual singleton methods
}

最佳答案

But due to static getInstance() method that will not be possible.

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

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());

关于java - 单例实现接口(interface)的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17988251/

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