Java单例实现

概述

在Java中,单例模式是一种常见的设计模式,用于确保某个类只有一个实例存在,并提供全局访问点。在本文中,我们将学习如何实现Java单例模式。

单例模式的步骤

以下表格展示了实现Java单例模式的步骤:

步骤 描述
1 创建一个私有的静态成员变量用于存储单例实例
2 将构造函数设置为私有,以禁止外部实例化
3 创建一个公有的静态方法,用于获取单例实例
4 在公有静态方法中判断单例实例是否为空,如果为空则创建一个新的实例
5 返回单例实例

现在我们将按照上述步骤来实现Java单例模式。

代码实现

public class Singleton {
    private static Singleton instance; // 步骤1: 创建一个私有的静态成员变量用于存储单例实例
    
    private Singleton() {} // 步骤2: 将构造函数设置为私有,以禁止外部实例化
    
    public static Singleton getInstance() { // 步骤3: 创建一个公有的静态方法,用于获取单例实例
        if (instance == null) { // 步骤4: 在公有静态方法中判断单例实例是否为空,如果为空则创建一个新的实例
            instance = new Singleton();
        }
        return instance; // 步骤5: 返回单例实例
    }
}

代码解释

  • 步骤1:创建一个私有的静态成员变量instance,它将用于存储单例实例。由于是静态成员变量,所以它在整个应用程序中只有一个实例。
  • 步骤2:将构造函数设置为私有,以禁止外部实例化。这样其他类就无法通过new关键字来创建Singleton的实例。
  • 步骤3:创建一个公有的静态方法getInstance(),用于获取单例实例。由于构造函数是私有的,外部类只能通过这个方法来获取单例实例。
  • 步骤4:在getInstance()方法中,我们首先判断instance是否为空,如果为空则创建一个新的Singleton实例。这样可以确保只有在第一次调用getInstance()方法时才会实例化对象,避免了不必要的资源浪费。
  • 步骤5:返回单例实例。

甘特图

gantt
    dateFormat  YYYY-MM-DD
    title Java单例实现甘特图
    section 代码实现
    实现代码          :active, 2022-12-01, 2022-12-10
    section 代码测试
    测试代码          :2022-12-11, 2022-12-20
    section 文章撰写
    撰写文章          :2022-12-21, 2022-12-31
    section 审稿修改
    审稿修改          :2023-01-01, 2023-01-10
    section 文章发布
    文章发布          :2023-01-11, 2023-01-15

旅行图

journey
    title Java单例实现旅行图
    section 准备
    开发环境准备      :2022-12-01, 2022-12-05
    section 学习单例模式
    学习单例模式概念  :2022-12-06, 2022-12-08
    section 实现代码
    实现单例模式代码  :2022-12-09, 2022-12-10
    section 测试代码
    编写测试代码      :2022-12-11, 2022-12-15
    运行测试代码      :2022-12-16, 2022-12-20
    section 撰写文章
    撰写文章内容      :2022-12-21,