Java的Runtime类是Singleton的正确例子吗?

时间:2018-03-29 12:14:19

标签: java design-patterns singleton

我已经阅读了一段时间的单例模式,当我用Java语言搜索Singleton类时,我发现Runtime是一个例子但是当我查看源代码时,我发现了一个非常基本的Singleton实现:

private static Runtime currentRuntime = new Runtime();
public static Runtime getRuntime() {
    return currentRuntime;
}
private Runtime() {}

虽然在互联网上有很多关于单身人士课程应该如何写的。我想知道的是哪个Java语言类最适合作为Singleton类示例,为什么?

1 个答案:

答案 0 :(得分:1)

是的,这是一个非常基本的单身人士。它做了它应该做的事情,没有特别的装饰。

你在互联网上找到的例子通常描述一个懒惰的初始化单例,强调getInstance()的性能(即避免同步,如果多个线程调用getInstance()则不允许创建多个实例在同一时间等等。

如果你不需要延迟初始化,那么创建一个单例变得非常简单,就像Runtime所见。

最后,你可以找到很多关于单身模式的文章(其中一些是误导性的),但它并不能保证它。它不是 有趣,有些人认为它是一种反模式,如果你发现自己经常写自己的单身,你可能做的事情不太正确。

额外的,最后,如果你认为你需要一个懒惰的初始化单例,那么当前的标准实现是enum

public enum MySingleton {
    INSTANCE

    public String getSarcasticMessage() {
        return "I'm a lazy loaded singleton, use me for everything!";
    }
}

MySingleton.INSTANCE.getSarcasticMessage();  // This is how to use it