21xrx.com
2024-11-22 06:36:28 Friday
登录
文章检索 我的文章 写文章
Java编程实现单例模式
2023-07-05 07:48:49 深夜i     --     --
Java 编程 单例模式 实现 设计模式

单例模式是一种常用的设计模式,它能够确保一个类只被实例化一次,并且提供了全局访问点。Java编程语言中,实现单例模式可以使用多种方式,本文将主要介绍其中的两种方式。

一、饿汉式单例模式

饿汉式单例模式的实现方式比较简单,就是在类加载时就实例化对象,并将其赋值给一个静态变量。这样,在类被加载时就保证了对象的唯一性。

下面是一个示例代码:


public class Singleton {

  private static Singleton INSTANCE = new Singleton(); // 在类加载时就初始化

  private Singleton() {} // 私有化构造函数,禁止通过new创建对象

  public static Singleton getInstance()

    return INSTANCE;

  

}

这种方式优点是线程安全,因为在类加载时就已经初始化对象,不需要考虑多线程的问题。缺点是有可能会造成内存浪费,因为在整个程序运行期间只有一个实例,如果只用到了一部分功能,那么其余的部分就可能是无用的。

二、懒汉式单例模式

懒汉式单例模式的实现方式是在第一次使用时才会创建对象,在多线程环境中需要考虑线程安全问题,一般使用volatile关键字来防止指令重排序,保证线程安全。

下面是一个示例代码:


public class Singleton {

  private static volatile Singleton INSTANCE = null; // 定义volatile变量,保证线程安全

  private Singleton() {} // 私有化构造函数,禁止通过new创建对象

  public static Singleton getInstance() {

    if (INSTANCE == null) { // 双重检查锁

      synchronized (Singleton.class) {

        if (INSTANCE == null) {

          INSTANCE = new Singleton();

        }

      }

    }

    return INSTANCE;

  }

}

这种方式优点是在需要用到的时候才会创建对象,减少了内存浪费。缺点是存在线程安全问题,需要使用双重检查锁来保证线程安全。

总结:

单例模式在Java编程中有很多应用场景,比如配置信息类、数据库连接池类、日志记录类等等,它们只需要被实例化一次,并且提供全局访问点,可以方便地为应用程序的其他部分提供服务。使用饿汉式单例模式和懒汉式单例模式都可以实现单例模式,开发者们可以根据自己的实际情况选择适合自己的方式。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复