java设计模式-单例

文章目录


前言

单例模式是一种创建型设计模式,它可以保证一个类只有一个实例,并提供全局访问点。单例模式在实际开发中经常使用,可以避免多个实例引起的资源浪费和同步问题。常见的java实现方式有多种。

一、饿汉式单例模式

饿汉式单例模式是指在类加载时就创建了单例对象,因此在调用时不需要再创建对象,直接使用即可。这种实现方式比较简单,但是在某些情况下可能会造成资源浪费。

二、懒汉式单例模式

懒汉式单例模式是指在调用时才创建单例对象,这种实现方式避免了资源浪费,但是需要注意线程安全问题。

三、双重检查锁单例模式

双重检查锁单例模式是指在懒汉式单例模式的基础上加入了双重检查锁机制,可以保证线程安全,同时也避免了资源浪费。

四、静态内部类单例模式

其中静态内部类单例模式最为常用,静态内部类单例模式利用了java语言中静态内部类的特性来实现单例模式。具体来说它将单例对象的创建延迟到静态内部类被加载时才执行,从而避免了多线程环境下的同步问题。代码示例如下:

java 复制代码
public class SingletonDemo {

    private static Map<String, String> idCodeMap=new ConcurrentHashMap<>();
    

    private SingletonDemo(){

    }
    public static SingletonDemo getInstance(){
        return SingletonHolder.INSTANCE;
    }
    private static class SingletonHolder{
        private static final SingletonDemo INSTANCE=new SingletonDemo();
    }
}

总结

单例模式的实现方式虽然很多,但只要记住常用的一种即可。

相关推荐
lionliu051913 小时前
数据库的乐观锁和悲观锁的区别
java·数据库·oracle
赵得C14 小时前
2025下半年软件设计师考前几页纸
java·开发语言·分布式·设计模式·性能优化·软考·软件设计师
歪楼小能手14 小时前
Android16底部导航栏添加音量加减虚拟按键
android·java·平板
幸存者letp14 小时前
为什么 max(words, key=len) 中需要传 key=len
服务器·开发语言·c#
weixin_4462608514 小时前
FastF1: 轻松获取和分析F1数据的Python包
开发语言·python
高山上有一只小老虎14 小时前
小红背单词
java·算法
Cosmoshhhyyy14 小时前
《Effective Java》解读第26条:请不要使用原生态类型
java·开发语言
郝学胜-神的一滴14 小时前
Linux下创建线程:从入门到实践
linux·服务器·开发语言·c++·程序人生·软件工程
山土成旧客14 小时前
【Python学习打卡-Day22】启航Kaggle:从路径管理到独立项目研究的全方位指南
开发语言·python·学习
我命由我1234514 小时前
Python Flask 开发 - Flask 路径参数类型(string、int、float、path、uuid)
服务器·开发语言·后端·python·flask·学习方法·python3.11