一、概念:

Java中单例模式是一种常见的设计模式,在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。单例模式的写法有好几种,这里主要介绍两种:懒汉式单例、饿汉式单例。

二、单例模式有以下特点:

1、单例类只能有一个实例。

2、单例类必须自己创建自己的唯一实例。

3、单例类必须给所有其他对象提供这一实例。

三、懒汉式和饿汉式的区别

懒汉式的特点是延迟加载,比如配置文件,采用懒汉式的方法,顾名思义,懒汉么,很懒的,配置文件的实例直到用到的时候才会加载。

饿汉式的特点是一开始就加载了,如果说懒汉式是“时间换空间”,那么饿汉式就是“空间换时间”,因为一开始就创建了实例,所以每次用到的之后直接返回就好了。

四、代码实现

// 懒汉模式
public class SingletonClass {

    private SingletonClass(){
    
    }

    private static SingletonClass instance=null;
    
    public static synchronized SingletonClass getInstance(){
        //synchronized   同步方法 保证该方法在某一个时间片只能被一个线程调用
        if(instance==null){
            instance=new SingletonClass();
        }
        return instance;
    }
}

// 饿汉模式
public class Singleton {

    private static final Singleton instance=new Singleton();

    private Singleton(){
    
    }

    // 这里提供了一个供外部访问本class的静态方法,可以直接访问
    public static Singleton getInstance(){
        return instance;
    }
}