单例模式(静态内部类)

静态内部类单例模式中实例由内部类创建,由于 JVM 在加载外部类的过程中, 是不会加载静态内部类的, 只有内部类的属性/方法被调用时才会被加载, 并初始化其静态属性。静态属性由于被 static 修饰,保证只被实例化一次,并且严格保证实例化顺序。

import java.io.Serializable;

/**
 * 单例模式(静态内部类)
 * 描述:
 *
 * @author lyn
 * @date 2022/3/29 18:23
 */
public class Singleton implements Serializable {

    private static final long serialVersionUID = 1L;


    private Singleton() {
        //防止反射破坏代理模式
        if (getInstance() != null) {
            throw new RuntimeException();
        }
    }

    private static class SingletonHolder {
        private static final Singleton INSTANCE = new Singleton();
    }

    public static Singleton getInstance() {
        return SingletonHolder.INSTANCE;
    }

    /**
     * 防止序列化破坏单例模式
     *
     * @return
     */
    private Object readResolve() {
        return SingletonHolder.INSTANCE;
    }

}

 

posted @ 2022-03-29 18:38  进击的小蔡鸟  阅读(620)  评论(0编辑  收藏  举报