“Head First 设计模式“ :单例模式
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,单例模式定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。类图如下:代码实现如下:public class Singleton { // 用静态变量来记录唯一的实例 privat
千家信息网最后更新 2025年12月02日“Head First 设计模式“ :单例模式
单例模式
定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。类图如下:
代码实现如下:
public class Singleton { // 用静态变量来记录唯一的实例 private static Singleton instance; /** * 构造方法私有化,防止被创建,只能类内部能使用构造器 */ private Singleton() { } /** * 实例化对象,并返回这个对象 * @return */ public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } // 其他的方法}并发环境下上面的代码会出现问题的,我们进一步修改,如下:
/** * 实例化对象,并返回这个对象 * synchronized加锁,可能对性能有影响哦 * @return */public static synchronized SingletonThread getInstance() { if (instance == null) { instance = new SingletonThread(); } return instance;}上面例子对性能很大的影响,那我们可以进一步改善吗?
- 如果getInstance()的性能对应用程序不是很关键,就什么都别做,不要改善了
- 使用"急切"创建实例,而不用延迟实例化的做法,代码如下:
public class Singleton3 { // 静态属性,类加载时初始化的,JVM保证唯一 private static Singleton3 instance = new Singleton3(); private Singleton3() { } public static Singleton3 getInstance() { return instance; }}
- 使用"双重检查加锁",在getInstance()中减少使用同步,不适合JDK1.4之前的版本,代码如下;
public class Singleton4 { // 用静态变量来记录唯一的实例, volatile多线程环境下保用最新的值 private volatile static Singleton4 instance; /** * 构造方法私有化,防止被创建,只能类内部能使用构造器 */ private Singleton4() { } /** * 实例化对象,并返回这个对象 * @return */ public static Singleton4 getInstance() { if (instance == null) { synchronized (Singleton4.class) { if (instance == null) { instance = new Singleton4(); } } } return instance; } // 其他的方法}注意:有多个类加载器时,单利可能产生多个哦,这个要注意哦。
单例模式的应用场景:
- 应用中某个实例对象需要频繁的被访问。
- 应用中每次启动只会存在一个实例。如账号系统,数据库系统。
实例
对象
代码
方法
应用
性能
静态
模式
变量
多个
环境
系统
构造器
进一
保证
影响
私有
很大
频繁
急切
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
dbase数据库下载
给视频加字幕的手机软件开发
织梦安装的时候提示数据库
资源池和数据库维护有什么区别
ipad设置代理服务器
成都绿线网络技术有限公司
2019网络安全宣传海报
周村计划软件开发服务
网络安全绘画图片高中
三调符号数据库
课程表在数据库中怎么存储
网络安全宣传展板图片
计算机网络技术包括
web页面访问数据库
幼儿园网络安全防护预案
网络安全知识教育视频1
david数据库使用说明
氨基磺酸数据库
腾讯云服务器淘宝买
饥荒联机本地服务器无法启动
石化网络安全答题
数据库的总结
网络安全客服
怎样添加接在打印服务器的打印机
黄山求职招聘软件开发
网络安全看什么书最好
常州玖银互联网科技有限公司
广东正规软件开发设施
视频监控服务器开发
数据库附加不了