我只是试图提出开发人员可能需要使用Singleton类的用例。他们在这里: -
我的理解是否正确?
我在jdk中寻找单身人士的例子,遇到了Runtime课,并想到了为什么这个单身人士?根据我的理解,理由应该是第一个。例如,我们需要同步,以便两个线程不会在同一时刻运行GC。我的逻辑是否正确?
答案 0 :(得分:5)
每个Java应用程序都有一个Runtime类的实例 允许应用程序与其中的环境接口 应用程序正在运行
由于Java程序正在执行的环境是一个不会改变的静态事物,因此感觉很直观,Runtime
是单例。
即使您生成越来越多的线程,处理器数量,总RAM等也不会改变。因此,使Runtime
单例实例通过避免必须创建包含与1000个其他线程相同的信息的对象来优化程序的执行。
这是我对它的理解。
答案 1 :(得分:-2)
单身人士是邪恶的。它们实际上是伪装的全局变量。它们对单元测试特别不好,因为一旦单例由类加载器加载,它的行为就被修复了,所以你不能模拟它。您的代码将被修复以永久地调用该依赖项。
更好的方法是使用依赖注入将该依赖项精确地注入到需要的位置,或者通过代码将依赖项传递到需要的位置。
阅读:http://c2.com/cgi/wiki?SingletonsAreEvil
你也问自己为什么要使用单身人士。单例表示一个实例,但它实际上表示每个类加载器一个实例。这可能是你真正想要的解决方案,也可能不是。