自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的说法,单元素枚举单例是;

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

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

作为一个枚举,这是单身人士得到的东西吗?

是的,枚举都是从Enum类扩展Enum ,它实现了Serializable

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

因此,您可以获得“更多序列化”,然后从实现序列化中获得。