避免使用Singleton的多个实例?

时间:2014-06-20 20:41:35

标签: java scala design-patterns singleton

我相信当单个对象被序列化然后在系列中过多地反序列化时,会产生多个单例实例。

你怎么能避免这种情况?

2 个答案:

答案 0 :(得分:4)

通常,在创建Singleton时,请确保只有一个实例。你可以这样做:

public static class Singleton{
    private final static Singleton instance;

    private Singleton(){}

    public static Singleton getInstance(){
        if(instance == null)
            instance = new Singleton();
        return instance;
    }


}

将构造函数放到private可确保除此类之外没有人可以创建Singleton实例。

你只需要用getInstance调用Singleton,而Singleton就可以完成所有的工作。

答案 1 :(得分:4)

Joshua Bloch谈到使用枚举作为单身人来避免Effective Java中的这个特定问题。看看这篇文章:Why Enums are Better Singletons - 或者直接从Bloch here阅读。