为什么枚举是单例的最佳实现?
2022-09-03 09:05:07
我读了有效的Java,其中指出单例最好使用.enum
此方法在功能上等效于公共字段方法,不同之处在于它更简洁,免费提供序列化机制,并提供针对多个实例化的铁定保证,即使面对复杂的序列化或反射攻击也是如此。虽然这种方法尚未被广泛采用,但单元素枚举类型是实现单例的最佳方式。
尽管如此,这似乎是实现动态序列化和真正的单实例的权衡,但是您失去了经典单例的更友好的OOP方法。枚举不能被继承,只能实现一个接口,如果你想提供一个框架类,你需要创建一个帮助器类。
那么,除了上述原因之外,我们为什么要接受枚举作为单例的最佳实现呢?