欢迎访问宙启技术站
智能推送

Java中的单例模式函数实现方法

发布时间:2023-05-27 09:49:53

单例模式是一种常见的设计模式,在Java中也有多种实现方法。下面将介绍几种Java中的单例模式函数实现方法。

1. 懒汉式单例模式

懒汉式单例模式是实现起来比较简单的一种单例模式方法,其特点是在 次调用时才会创建对象,这样可以提高程序的性能。以下是一个例子:

public class Singleton {

    private static Singleton instance; // 声明私有静态变量

    private Singleton() {} // 构造函数私有化

    

    public static Singleton getInstance() { // 声明公有静态方法

        if (instance == null) { //  次调用时才创建对象

            instance = new Singleton();

        }

        return instance;

    }

}

2. 饿汉式单例模式

饿汉式单例模式就是在类加载时就创建对象,非常简单,但是有可能浪费系统资源。以下是一个例子:

public class Singleton {

    private static final Singleton instance = new Singleton(); // 声明静态常量,并创建对象

    private Singleton() {} // 构造函数私有化

    

    public static Singleton getInstance() { // 声明公有静态方法

        return instance;

    }

}

3. 双重校验锁单例模式

双重校验锁单例模式是懒汉式单例模式的升级版,因为它可以解决懒汉式模式的线程不安全问题,同时还能保持懒汉式模式的优点。以下是一个例子:

public class Singleton {

    private static volatile Singleton instance; // 声明私有静态变量(使用volatile关键字保证线程安全)

    private Singleton() {} // 构造函数私有化

    

    public static Singleton getInstance() { // 声明公有静态方法

        if (instance == null) { //  次调用时才创建对象

            synchronized(Singleton.class) { // 对对象加锁

                if (instance == null) { // 双重校验锁

                    instance = new Singleton();

                }

            }

        }

        return instance;

    }

}

4. 静态内部类单例模式

静态内部类单例模式是一种常见的单例模式方法,其特点是在 次调用时才会创建对象,并且保证线程安全。以下是一个例子:

public class Singleton {

    private Singleton() {} // 构造函数私有化

    private static class SingletonHolder { // 静态内部类

        private static final Singleton INSTANCE = new Singleton(); // 声明静态常量,并创建对象

    }

    public static Singleton getInstance() { // 声明公有静态方法

        return SingletonHolder.INSTANCE;

    }

}

以上是常见的几种Java中的单例模式函数实现方法。不同的方法各有特点,可以根据实际需要选择适合的方法。