设计模式单例模式:5-单元素枚举类模式

Posted Gerrard_Feng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式单例模式:5-单元素枚举类模式相关的知识,希望对你有一定的参考价值。

思想:

 

  这是 Effective Java 极力推荐的一种,代码为各种实现中最简单的。

 

技术分享
1 public enum EnumSingleton {
2 
3     INSTANCE;
4 
5 }
单元素枚举类模式

 

  其实现,完全是基于枚举类的特性,可以说天生受到了 JVM 的支持,而且既不用思考反射,也不用考虑多线程,对于自身的循环引用,本质上也是一个对象。

 

技术分享
1 @Test
2     public void test() throws Exception {
3         EnumSingleton singleton1 = EnumSingleton.INSTANCE;
4         EnumSingleton singleton2 = EnumSingleton.INSTANCE;
5         @SuppressWarnings("static-access")
6         EnumSingleton singleton3 = EnumSingleton.INSTANCE.INSTANCE;
7         Assert.assertSame(singleton1, singleton2);
8         Assert.assertSame(singleton1, singleton3);
9     }
JUnit

 

  但是劣势也很明显,而且也是由枚举类带来的:枚举类不支持继承和实现,所以在某些场景下不能使用。

 

以上是关于设计模式单例模式:5-单元素枚举类模式的主要内容,如果未能解决你的问题,请参考以下文章

在使用枚举版单例模式时,修改单例类代码是扩展单例功能的唯一方法吗?

如何对枚举类型实现的单例模式进行mock

设计模式单例模式

设计模式单例模式

为什么用枚举类来实现单例模式越来越流行?

为什么用枚举类来实现单例模式越来越流行?