一、饿汉式
    image.png
    在getInstance()之前,类已经创建好了。
    设置私有的构造函数,使用静态final变量创建对象,只提供一个方法获取对象,其他类无法创建该类对象。

    1. 反射破坏单例:在构造函数里判断当前实例是否为null,如果不为null,则抛异常;
    2. 序列化破坏单例:重写readResolve()方法,返回单例模式的对象;
    3. unsafe破坏单例:无预防方法。

    二、枚举饿汉式
    image.png

    1. 枚举类型不能通过反射创建对象;
    2. 不能序列化破坏单例;
    3. unsafe无法预防。