兄弟萌,相信大家已经掌握了单例模式的多种实现方式,如:饿汉式、懒汉式、双重检测锁、静态内部类、枚举。前面几种相信大家看到代码很容易能够理解,但看到枚举方式时,相信大家会跟我有一种心情:WTF?这特么是怎么实现单例的?
废话少说,先看枚举方式是怎样的。
看到这里,先不谈它的底层实现原理,甚至可能还有很多人还不知道它怎么拿到这个单例对象,接着看。
我们反编译来研究一下这到底是怎么实现的?
- javap EnumSingleton.java
- javap -c EnumSingleton.class
为了追求简单,我们直接看红框部分,大家可以看明白了吧,其实枚举方式底层就是懒汉式写法。
总之,枚举类实现单例模式是极力推荐的单例实现模式,因为枚举类型是线程安全的,并且只会装载一次,而且枚举类型是所用单例实现中唯一一种不会被破坏的单例实现模式。