Loading

单例模式

单例模式

  • 目的
    使得类的一个对象成为该类系统中的唯一实例
  • 使用场景
    1、创建对象时占用资源过多,但同时有需要用到该类对象
    2、对系统内资源要求统一读写,如读写配置信息
    3、对多个实例内存在可能引起程序逻辑错误,如号码生成器

恶汉式

/**
 * //恶汉式:创建对象实例的时候直接初始化 空间换时间
 * Created by Kong on 2019/12/7.
 */
public class SingletonOne {
    private static SingletonOne  singletonOne = new SingletonOne();
    private SingletonOne() {}

    public static SingletonOne getSingletonOne() {
        return singletonOne;
    }
}

懒汉式

/**
 * 懒汉式:类内实例对象创建时并不直接初始化,直到第一次调用get方法时,才完成初始化操作 时间换空间
 * Created by Kong on 2019/12/7.
 */
public class SingletonTwo {
    private static SingletonTwo instance;

    private SingletonTwo() {}

    public static SingletonTwo getInstance() {
        if (instance == null)
            instance = new SingletonTwo();
        return instance;
    }
}

恶汉式 PK 懒汉式

  • 恶汉式线程安全
  • 懒汉式线程风险

解决方案:

posted @ 2020-04-27 17:38  JesseKkk  阅读(130)  评论(0)    收藏  举报