20220808-单例设计模式

1. 设计模式

  • 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。
  • 使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。
  • 设计模式就像经典的棋谱,不同的棋局,我们用不同的棋谱,免去我们自己在思考和摸索。

2 单例设计模式

  • 采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法

2.1 懒汉式

  • 将构造器私有化(即无法在本类之外通过new创建对象)
  • 提供私有化静态本类对象变量,并创建对象
  • 提供公共的方法获取对象引用
public class SingleTon01 {
    private static SingleTon01 s = new SingleTon01();
    private SingleTon01() {
    }
    public static SingleTon01 getInstance() {
        return s;
    }
}

2.2 饿汉式

  • 将构造器私有化(即无法在本类之外通过new创建对象)
  • 提供私有化静态本类对象变量,不创建对象
  • 提供公共的方法,在方法中判断对象时候存在,不存在时创建对象,对外提供对象引用
public class SingleTon02 {
    private static SingleTon02 s;
    private SingleTon02() {
    }
    public static SingleTon02 getInstance() {
        if (s == null) {
            s = new SingleTon02();
        }
        return s;
    }
}

2.3 区别

  • 创建的时机不同,饿汉式是在类加载时就创建对象实例,懒汉式是在使用时创建对象实例
  • 饿汉式不存在线程安全问题,懒汉式存在线程安全问题
  • 饿汉式存在浪费资源的可能。
  • java.lang.Runtime使用了单例设计模式
public class Runtime {
    private static Runtime currentRuntime = new Runtime();
    public static Runtime getRuntime() {
        return currentRuntime;
    }
    private Runtime() {}
    ...
}
posted @ 2022-08-08 16:58  淡忘的江南  阅读(27)  评论(0)    收藏  举报