和 Holder 模式一样 采用的是 内部类的方式构造对象的实例
这里就多说了 至于 Holder 可以翻看上一章
代码:
/** * 枚举模式 */ public class EnumSingleton { private EnumSingleton(){} /** * 采用 内部类 枚举的方式 实例化对象 */ private enum EnumSingletonDemo{ INSTANCE; private EnumSingleton instance; EnumSingletonDemo(){ instance=new EnumSingleton(); } } public static EnumSingleton getInstance(){ return EnumSingletonDemo.INSTANCE.instance; } /** * 测试 * @param args */ public static void main(String[] args) { for(int i=0;i<20;i++){ new Thread(()->{ System.out.println(EnumSingleton.getInstance()); }).start(); } } }
测试结果:
com.company.EnumSingleton@531ebd8d
com.company.EnumSingleton@531ebd8d
com.company.EnumSingleton@531ebd8d
com.company.EnumSingleton@531ebd8d
com.company.EnumSingleton@531ebd8d
com.company.EnumSingleton@531ebd8d
com.company.EnumSingleton@531ebd8d
com.company.EnumSingleton@531ebd8d
com.company.EnumSingleton@531ebd8d
com.company.EnumSingleton@531ebd8d
com.company.EnumSingleton@531ebd8d
com.company.EnumSingleton@531ebd8d
com.company.EnumSingleton@531ebd8d
com.company.EnumSingleton@531ebd8d
com.company.EnumSingleton@531ebd8d
com.company.EnumSingleton@531ebd8d
com.company.EnumSingleton@531ebd8d
com.company.EnumSingleton@531ebd8d
com.company.EnumSingleton@531ebd8d
com.company.EnumSingleton@531ebd8d