设计模式--单例模式

单例模式的介绍

单例模式(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;
    }
}
相关推荐
骄马之死19 小时前
SpringMVC + SpringBoot 核心知识点总结
java·spring boot·后端
zhengfei61120 小时前
第3章 Agent 类型分类与设计模式
设计模式
刀法如飞21 小时前
一文搞懂DDD 领域驱动设计思想原理
设计模式·架构·代码规范
郑洁文21 小时前
基于Spring Boot的流浪动物救助网站
java·spring boot·后端·毕设·流浪动物救助
螺丝钉code21 小时前
JAVA项目 Claude code CLAUDE.md 到底应该怎么写
java·人工智能·claude code
Cosolar1 天前
LlamaIndex 文档解析与分块策略深度解析
人工智能·面试·架构
摇滚侠1 天前
Maven 入门+高深 单一架构案例 54-59
java·架构·maven·intellij-idea
VidDown1 天前
Webhook 调试器:让第三方回调“原形毕露”
java·开发语言·javascript·编辑器·postman
折哥的程序人生 · 物流技术专研1 天前
Java 23 种设计模式:从踩坑到精通 | 原型模式 —— 克隆对象,深拷贝与浅拷贝的坑你踩过吗?
java·设计模式·架构·原型模式·单一职责原则