设计模式COF23【单例模式】

1.核心作用

保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。

2.常见应用场景

  • windos任务管理器
  • 数据库连接池的设计
  • 操作系统的文件系统
  • Servlet 中的Application

常见使用场景

3.单例模式的优点

在这里插入图片描述

在这里插入图片描述

4.常见的单例模式

在这里插入图片描述

(1)饿汉式实现

在这里插入图片描述

代码

package java1;

/**
 * 饿汉式单例模式
 */
public class HungrySingleton {

    //类初始化时候,立即加载这个对象加载类时,天然的是线程安全的
    private static HungrySingleton instance = new HungrySingleton();
    //私有化构造器
    private HungrySingleton(){

    }
    //方法没有同步,调用效率高
    public static HungrySingleton getInstance(){
        return instance;
    }

}

(2)懒汉式实现

在这里插入图片描述

代码

package java1;

/**
 * 懒汉式单例模式
 */
public class LazySingleton {

    //类初始化时,不初始化这个对象(延时加载,真正用的时候创建)
    private static LazySingleton instance;
    //私有化
    private LazySingleton() {

    }
    //方法同步,调用效率低
    public static synchronized LazySingleton getInstance() {
        if (null == instance) {
            instance = new LazySingleton();
        }
        return instance;
    }
}

(3)双重检测锁实现

在这里插入图片描述

(4)静态内部类

在这里插入图片描述

(5)使用枚举实现单例模式

在这里插入图片描述

5.反射和反序列化漏洞和解决方案

6.常用的五种单例模式在多线程环境下的效率测试

在这里插入图片描述

7.如何选用

在这里插入图片描述

posted @ 2021-11-20 20:12  我有满天星辰  阅读(12)  评论(0编辑  收藏  举报