单元素枚举实现单例模式

Posted by 小白 on January 9, 2017

使用静态工厂方法或者传统地声明一个public的实例域(并将构造器声明为private),都可以实现单例模式,但是使用反射机制都可以获取不同的实例。

自从枚举出现以后,单元素枚举就成为了单例的绝佳选择。

public enum Singleton {
    INSTANCE;
}
public class Test {
    public static void main(String[] args) {
        Singleton singleton1 = Singleton.INSTANCE;
        Singleton singleton2 = Singleton.INSTANCE;
        System.out.print(singleton1==singleton2);
    }
}

结果是true,说明单元素枚举的单例方案确实可行。