侧边栏壁纸
博主头像
人生短短几个秋

行动起来,活在当下

  • 累计撰写 45 篇文章
  • 累计创建 20 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

设计模式-单例模式

人生短短几个秋
2025-01-25 / 0 评论 / 0 点赞 / 16 阅读 / 0 字

设计模式 - 单例模式(Singleton Pattern)

介绍

单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供一个全局访问点。这种模式通常用于那些需要频繁实例化然后销毁的对象,或者创建对象需要消耗大量资源的情况,如数据库连接等。

实现

在Java中实现单例模式有多种方法,这里我们先来看一种简单的懒汉式实现方式。这种方法是在第一次调用getInstance方法时才创建实例。

懒汉式实现

public class Singleton {
    private static Singleton instance;

    // 私有构造函数防止其他类实例化这个类
    private Singleton() {}

    // 静态方法返回单例
    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

分析

以上实现虽然简单,但是每次调用getInstance()方法都需要同步,这会导致不必要的同步开销。为了提高性能,我们可以采用双重检查锁定(Double Checked Locking)的方式。

双重检查锁定(DCL)

public class Singleton {
    private volatile static Singleton instance;

    private Singleton() {}

    public static Singleton getInstance() {
        if (instance == null) { // 第一次检查
            synchronized (Singleton.class) {
                if (instance == null) { // 第二次检查
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

分析

通过双重检查锁定的方式,只有在第一次实例化的时候才需要同步,之后再调用getInstance()方法就不会进行同步操作了,这样就提高了效率。

使用场景

单例模式适用于以下情况:

  • 系统中的某个类只能有一个实例,比如配置管理类。
  • 创建多个实例没有意义,比如线程池、缓存等。

总结

单例模式是一种简单但非常实用的设计模式。通过限制类的实例化次数为一个,可以有效地控制共享资源的使用。不过,在多线程环境下要特别注意同步问题,否则可能会导致单例模式失效。


以上就是关于单例模式的一个详细介绍及其Java实现的例子。希望对你有所帮助!

0

评论区