设计模式-单例模式

单例模式介绍:

单例模式(Singleton Pattern)是设计模式中最简单且最常用的一种创建型模式,其目的是保证一个类在整个系统中只存在一个实例,并提供全局访问点来获取这个唯一实例。这种模式主要适用于那些需要频繁实例化然后又希望避免因为多次实例化而消耗过多资源或产生副作用的情况。

单例模式的实现步聚:

1 私有化构造函数:

将构造函数声明为private,确保只有类自身可以调用它,外部不可以实例化对象。

java 复制代码
public class Singleton {
    private Singleton() {}
}

2 静态成员变量存储单个实例

创建一个私有的静态变量来持有唯一的实例对象。

java 复制代码
private static volatile Singleton instance;

3 公有静态方法获取实例

写一个公共的静态方法,返回已创建的单例实例。

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

上面是线程安全的懒汉式单例,另外还有饱汉式单例,初始化时就创建实例,代码如下:

java 复制代码
public class Singleton {
    private static final Singleton instance = new Singleton();

    private Singleton() {}

    public static Singleton getInstance() {
        return instance;
    }
}

单例实现需要考虑以下几点:

  • 线程安全性:多线程环境下,单例的初始化只会发生一次。
  • 序列化与反序列化问题:若单例类实现了Serializable接口,需要防止通过反序列化生成新的实例,可通过添加readResolve()方法解决。
  • 反射攻击:可以通过反射破坏单例模式,增加加检查机制阻止非正常创建实例。
相关推荐
workflower11 小时前
人形机器人灵巧手产业链
人工智能·设计模式·机器人·云计算·无人机
Java后端的Ai之路12 小时前
03、Python - 抽象工厂模式
开发语言·python·设计模式·抽象工厂模式·通用智慧
旧梦952713 小时前
Java 单例模式:从基础到实战的完整指南
java·开发语言·单例模式
AI人工智能+电脑小能手17 小时前
大白话说Java设计模式-45-解释器模式(源码剖析篇)
java·设计模式·解释器模式·源码分析·pattern·spel·javacc
码匠许师傅21 小时前
【设计模式精讲】4.单例模式(Singleton)
c++·单例模式·设计模式
雾削木21 小时前
2026 编程领域热点知识速览:AI 辅助开发、设计模式实战与嵌入式高效迭代
人工智能·设计模式
AI人工智能+电脑小能手2 天前
大白话说Java设计模式-42-访问者模式(业务实战篇)
java·spring·设计模式·访问者模式·asm·营销规则·数据结构与操作分离
AI人工智能+电脑小能手2 天前
大白话说Java设计模式-43-访问者模式(源码剖析篇)
java·设计模式·访问者模式·源码分析·elementvisitor·asm classvisitor·spring spel
Michael_lcf3 天前
Agent设计模式:思考-行动-观察循环的本质与局限
设计模式·agent设计模式·agent设计模式的本质
丰锋ff3 天前
设计模式学习笔记
笔记·学习·设计模式