Java语言必须学会的23种设计模式之一——单例模式(创造型模式)

58 阅读1分钟

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

  1. 饿汉式
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;
    }
}
  1. 懒汉式双锁机制
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;
    }
}

4.懒汉式静态内部类实现方式

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;
    }
}