c语言编程笔录

您现在的位置是:首页 > 编程 > 编程经验

编程经验

Java单例模式中的饿汉和懒汉模式怎么实现

丁汉臻 2023-07-31编程经验
前言在Java编程中,单例模式是一种常见的设计模式,它确保一个类只能创建一个实例,并提供一个全局访问点来获取该实例。实现单例模式有多种方法,其中包括饿汉模式和懒汉模式

前言

在Java编程中,单例模式是一种常见的设计模式,它确保一个类只能创建一个实例,并提供一个全局访问点来获取该实例。实现单例模式有多种方法,其中包括饿汉模式和懒汉模式。本文将详细介绍两种模式的实现原理和具体步骤。

饿汉模式

饿汉单例模式在类加载时就创建实例对象,并在静态变量中保存这个唯一的实例。简单来说,饿汉模式的特点是:类一旦加载就创建一个单例,保证在调用 getInstance() 方法之前单例已经存在。 实现饿汉模式的步骤如下: 1. 将类的构造函数设置为私有,这样外部就无法通过 new 关键字来实例化该类。 2. 在类的内部创建一个静态私有的实例对象,通过这个私有实例对象对外提供获取实例的方法。 3. 提供一个公有的静态方法,允许外部获取该类的唯一实例。 下面是饿汉模式的示例代码:
public class Singleton {

    // 2. 在类的内部创建一个静态私有的实例对象
    private static Singleton instance = new Singleton();

    // 1. 将类的构造函数设置为私有
    private Singleton() {}

    // 3. 提供一个公有的静态方法,允许外部获取实例
    public static Singleton getInstance() {
        return instance;
    }
}

懒汉模式

懒汉模式与饿汉模式不同,它在需要时才创建实例对象。懒汉模式的特点是:类加载时没有生成单例,只有当第一次调用 getInstance() 方法时,才会创建这个唯一的实例。 实现懒汉模式的步骤如下: 1. 将类的构造函数设置为私有,与饿汉模式相同,这样外部就无法通过 new 关键字来实例化该类。 2. 在类的内部创建一个静态私有的实例对象,并将其初始化为 null。 3. 提供一个公有的静态方法,在该方法中判断实例对象是否为 null,如果为 null,则进行实例化,并返回实例对象;如果不为 null,则直接返回实例对象。 下面是懒汉模式的示例代码:
public class Singleton {

    // 2. 在类的内部创建一个静态私有的实例对象,并将其初始化为 null
    private static Singleton instance = null;

    // 1. 将类的构造函数设置为私有
    private Singleton() {}

    // 3. 提供一个公有的静态方法,用于获取实例
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton(); // 实例化对象
        }
        return instance;
    }
}

总结

饿汉模式和懒汉模式都是实现单例模式的常见方式。饿汉模式在类加载时就创建实例对象,适用于实例较小且占用资源较少的情况。懒汉模式在需要时才创建实例对象,适用于实例较大或实例化较耗时的情况。根据实际需求,可以选择合适的单例模式来保证程序的性能和资源的合理利用。

文章评论