设计模式--单例模式

单例模式的介绍

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供了一个全局访问点来访问该实例。

需要注意的点:

每个单例类只能有一个实例

单例类必须自己创建自己的唯一实例

单例类必须给所有的其他对象提供这一实例

单例类的构造方法必须私有

单例模式的实现

单例模式有很多实现方法,主要为懒汉式和饿汉式,饿汉式为线程安全的。懒汉式不安全,以下仅仅介绍这两种方式的线程安全的实现方式

懒汉式

采用双重检查锁+volatile 的形式,不仅保证了线程安全的前提下也提高了性能

java 复制代码
public class Singleton  {
    private volatile static Singleton  singleton;
    private Singleton (){}
    public static Singleton getInstance(){
        if(singleton==null){
            synchronized (Singleton.class){
                if(singleton==null){
                    singleton=new Singleton();
                }
            }
        }
        return singleton;
    }
}

饿汉式

这种单例实现方式被称为"饿汉式 ",因为它在类加载时就立即创建了实例。这种方式简单且线程安全,但在某些情况下可能会导致资源的浪费,因为实例在创建后可能不会被使用。

java 复制代码
public class Singleton1 {
    //创建 Singleton1 的一个对象
    private static Singleton1 singleton1 = new Singleton1();

    //让构造函数为 private,这样该类就不会被实例化
    private Singleton1(){}

    //获取唯一可用的对象
    public static Singleton1 getSingleton1(){
        return singleton1;
    }
}
相关推荐
今天AI了吗11 分钟前
DeepSeek Harness 深度解析:从评测架构到实战落地
java·网络·数据库·人工智能·架构·java-ee
许彰午30 分钟前
27-AuthService登录链路
java·低代码·架构
泡海椒35 分钟前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
黄敬峰38 分钟前
一文搞懂 LLM 流式输出与 SSE
面试
Rain的Java大神之路2 小时前
JavaWeb开发如何解决跨域问题
java·前端·后端·nginx·web安全·面试·运维开发
自动化监测Learner2 小时前
Navicat Premium 17 中文版安装教程(2026最新版)
java·linux·数据库
那个松鼠很眼熟w2 小时前
4.Spring-Ai入门案例
java·人工智能·spring
计算机毕设定制辅导-无忧学长2 小时前
《基于SpringBoot青年公寓出租管理系统的设计与实现》
java·vue.js·spring boot·青年公寓出租管理系统
职场的momo2 小时前
字节生活服务海量内推,挑战亿级订单与AI交易中台
人工智能·程序人生·面试·职场和发展·跳槽·生活·业界资讯
泡海椒3 小时前
JQuick-Curl 二次开发:自定义解析器、扩展点开发指南,如何把框架能力真正变成团队资产
java·开发语言·okhttp·maven