当前位置: 首页 > news >正文

【设计模式】单例模式

什么是单例模式?

保证一个类仅有一个实例,并提供一个访问它的全局访问点
在这里插入图片描述

单例模式的应用场景

1.整个程序的运行中只允许有一个类的实例;

2.需要频繁实例化然后销毁的对象。

3.创建对象时耗时过多或者耗资源过多,但又经常用到的对象。

4.方便资源相互通信的环境

饿汉式与懒汉式

饿汉式

在程序创建的时候就进行初始化,并且对象唯一。

代码

public class SuperTeacher {private static SuperTeacher superTeacher = new SuperTeacher();private SuperTeacher(){}public static SuperTeacher getInstance(){return superTeacher;}
}

注释

在这里插入图片描述

懒汉式

需要时才创建于堆中,多线程情况下不能保证唯一性。

代码

public class SuperStudent {private static SuperStudent instance;private SuperStudent(){}public static SuperStudent  getInstance(){if(null == instance){instance = new SuperStudent();}return instance;}
}

注释

在这里插入图片描述

多线程情景下:

在多线程情景下,只能使用饿汉式,因为程序加载就实例化了一个对象。不想懒汉式,别人调用了getInstance方法,再实例化对象。无法保证对象的唯一性。
当然了,我们可以给懒汉式加锁以保证其唯一性。(使用synchronized修饰公有方法即可)
在这里插入图片描述

单例模式的优缺点

优点:

  1. 对频繁访问又销毁的对象,单例模式保证了对象的唯一性。减少了系统的性能损耗。
  2. 保证全局唯一对象。
  3. 允许全局访问。
  4. 允许可变数目的实例。

缺点:

  1. 扩展性很差。
  2. 符合的场景有限。
  3. 如果实例化的对象长时间不被使用,系统会认为是垃圾。而进行回收。可能导致对象状态的丢失。
http://www.lryc.cn/news/118419.html

相关文章:

  • (2)原神角色数据分析-2
  • 138. 复制带随机指针的链表
  • Windows中redis怎么设置密码
  • 租赁OLED透明屏:打造独特商业体验的智慧选择
  • Nacos服务治理—负载均衡
  • flask-----初始项目架构
  • 揭秘史上最全可视化大屏模板,00后亲测好用到离谱,效率加速99%
  • nginx基于主机和用户访问控制以及缓存简单例子
  • React使用antd的图片预览组件,点击哪个图片就预览哪个的设置
  • 排序的介绍
  • appuploader使用教程
  • 企业权限管理(七)-权限操作
  • 【深度学习笔记】TensorFlow 常用函数
  • 函数的递归与迭代
  • win10 + VS2022 安装opencv C++
  • nginx反向代理及负载均衡的实现
  • Tomcat部署SpringBoot项目
  • Oracle笔记--dblink
  • Mapbox加载天地图CGCS2000矢量瓦片地图
  • day3 STM32 GPIO口介绍
  • 【ElasticSearch】ElasticSearch 内存设置原则
  • VUE+ElementUI的表单验证二选一必填项,并且满足条件后清除表单验证提示
  • NLP 时事和见解【2023】
  • Windows 环境下 Python3 离线安装 cryptography 失败
  • 年轻代频繁GC ParNew导致http变慢
  • 在.NET 6.0中自定义接口路由
  • Kotlin读写分离CopyOnWriteArrayList
  • centos自动同步北京时间
  • element-ui表格跨页多选实现
  • 线性代数(三) 线性方程组向量空间