如何以适当的方式写单例?

如何以适当的方式写单例?,第1张

如何以适当的方式写单例?

创建单例时,我想到的第一件事是

enum
。我通常使用enum实现单例:

enum Singleton {    INSTANCE;}

使用枚举可为您带来的好处之一就是序列化。

对于单例类,您将必须确保通过实现

readResolve()
方法来确保序列化和反序列化不会创建新实例,而enum并非如此。

使用类,您应该这样创建单例:

public final class Singleton implements Serializable {    // For lazy-laoding (if only you want)    private static class SingletonHolder {        private static final Singleton INSTANCE = new Singleton();    }    private Singleton() {        if (SingletonHolder.INSTANCE != null) { // throw Some Exception        }    }    public static Singleton getInstance() {        return SingletonHolder.INSTANCE;    }    // To avoid deserialization create new instance    @SuppressWarnings("unused")    private Singleton readResolve() {        return SingletonHolder.INSTANCE;    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5587076.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存