思想:
这是 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
但是劣势也很明显,而且也是由枚举类带来的:枚举类不支持继承和实现,所以在某些场景下不能使用。
时间: 2024-11-05 20:28:59