自Java 5以来最好的单例模式

时间:2011-04-22 20:09:44

标签: java enums singleton java-5

从Java 5开始,据说创建单例的最佳方法是使用单元素枚举类型。

示例:

public enum SuperSingleton implements Zooma{
    INSTANCE;

    /**
     */
    public void fightTheBattle(){
        System.out.println("I am fighting the battle!!!");
    }

    @Override
    public void runningWild() {
        //This is method implemented from the Zooma interface.      
    }
}

根据Joshua Bloch的说法,单元素枚举类型是单身;

  • 更简洁
  • 免费提供序列化机制
  • 并提供反对多重实例的铁定。

我可以看到它是如何更简洁以及它如何提供反对多实例化的铁定, 但它如何免费提供序列化机制?

这是单身人士通过枚举得到的东西吗?

3 个答案:

答案 0 :(得分:3)

是的,枚举全部延伸到Enum class,后者实现了Serializable

答案 1 :(得分:1)

答案 2 :(得分:1)

我不是百分百肯定,但我认为如果你反序列化一个序列化单例,那么一旦你最终得到多个实例。枚举实例将永远保持单身。

所以你得到'更多序列化'然后你从实现序列化得到的。