设计模式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 @   我有满天星辰  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示