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

如何在Java中使用单例模式函数

发布时间:2023-06-19 05:15:36

单例模式是一种创建对象的设计模式,它确保一个类只有一个实例,并提供一个全局访问点。在Java中,单例模式非常常用,可以用来减少对象创建和内存消耗,提高性能,并保证系统的安全性。本文将介绍在Java中如何使用单例模式函数。

单例模式有三个要素,分别是私有构造函数、私有静态变量和公有静态方法。在Java中,我们通常使用饿汉式单例模式和懒汉式单例模式。

饿汉式单例模式

饿汉式单例模式在类加载时立即创建单例对象,所以线程安全,但会影响性能。

首先定义一个单例类Singleton,它的构造函数和成员变量都要私有化,这样就不能从类外部访问它们。

public class Singleton {  

    //私有静态变量在类加载时就创建了对象 

    private static Singleton instance = new Singleton();  

  

    private Singleton() {}  

  

    //静态工厂方法返回一个 的单例实例

    public static Singleton getInstance() {  

        return instance;  

    }  

}

此时,我们通过调用getInstance方法就可以获取该单例的实例。

懒汉式单例模式

懒汉式单例模式在需要时才创建实例,但非线程安全,需要加锁处理,会影响性能。

首先定义一个单例类Singleton,它的构造函数和成员变量都要私有化,这样就不能从类外部访问它们。

public class Singleton {  

    //私有静态变量,延迟实例化

    private static Singleton instance = null;  

  

    private Singleton() {}  

  

    //静态工厂方法返回一个 的单例实例

    public static synchronized Singleton getInstance() {  

        if (instance == null) {  

            instance = new Singleton();  

        }  

        return instance;  

    }  

}

在getInstance方法中,我们首先判断单例实例是否已经被创建,如果没有则创建实例。由于此方法是synchronized同步的,所以可以保证线程安全。除了使用synchronized同步方法外,还可以使用DCL(double-checked locking)实现懒汉式单例模式,在多线程环境下也能保证单例实例的 性。

总结

单例模式是一种非常常用的设计模式,在Java中有两种实现方式,饿汉式和懒汉式。饿汉式单例模式在类加载时就创建单例对象,所以线程安全,但会影响性能。懒汉式单例模式在需要时才创建实例,但非线程安全,需要加锁处理,会影响性能。无论哪种方式,都需要保证单例实例的 性。