自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
。
我不是百分百肯定,但我认为如果你反序列化一个序列化的单例,那么一旦你最终得到多个实例。 枚举实例将始终保持单身。
因此,您可以获得“更多序列化”,然后从实现序列化中获得。