跳转至

单例模式

单例模式是一种创建型设计模式,它确保在整个应用程序生命周期内只有一个实例对象被创建并且全局可访问。饿汉式懒汉式是实现单例模式的两种常见方式。

一、饿汉式

public class Singleton {
    private static final Singleton instance = new Singleton();
    private Singleton() {
        System.out.println("create Singleton successfully");
    }
    public static Singleton getInstance() {
        System.out.println("Singleton has been created");
        return instance;
    }
}

二、懒汉式

1. 懒汉式普通实现

public class Singleton {
    private static Singleton instance;
    private Singleton() {
        System.out.println("create Singleton successfully");
    }
    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        System.out.println("Singleton has been created");
        return instance;
    }
}

2. 懒汉式双重检查锁实现

public class Singleton {
    private volatile static Singleton instance;
    private Singleton() {
        System.out.println("create Singleton successfully");
    }
    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        System.out.println("Singleton has been created");
        return instance;
    }
}

3. 懒汉式静态内部类实现

public class Singleton {
    private Singleton() {
        System.out.println("create Singleton successfully");
    }
    private static class SingletonHolder {
        private static final Singleton instance = new Singleton();
    }
    public static Singleton getInstance() {
        return SingletonHolder.instance;
    }
}