设计模式--单例模式

单例模式的介绍

单例模式(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;
    }
}
相关推荐
yxlalm2 小时前
Spring AI+RAG 01-项目背景与技术选型
java·人工智能·spring
程序员清风2 小时前
Java 后端高并发设计:线程池、限流、熔断与降级
java·数据库·oracle
码匠许师傅3 小时前
【设计模式精讲】29.行为型模式总结与对比(Behavioral Patterns Summary)
c++·设计模式·uml
Seoyoneh3 小时前
Agentic Workflow编排架构:云客服从“被动响应”迈向“主动执行”的技术实现
java·开发语言·架构
海南java第二人3 小时前
对外 API 如何保证幂等性?插入数据 / 上传表格场景全方案汇总
java·幂等性
tryxr3 小时前
Chat2Excel 文件服务模块上传文件功能开发
java·项目·oss·easyexcel·文件服务
Tangyuewei3 小时前
Java 写 Agent:模型只是组件
java·开发语言
彧azz4 小时前
Java学习语法篇:变量
java·学习
信誓旦旦的程序猿5 小时前
【量化系统从零构建 #04】存储设计:选型·建库·交易日历
java·人工智能·python·股票数据api·股票数据·股票数据api接口·股票api数据接口
yurenpai(27届找实习中)5 小时前
Java 10 的 var 为什么不能随便用?从订单汇总看懂类型推断与泛型陷阱
java·开发语言·java18