单例模式
单例模式
-
静态常量饿汉式
class Singleton { private static Singleton instance = new Singleton; private Singleton() {} public static Singleton getInstance() { return instance; } } -
静态代码块饿汉式
class Singleton { private static Singleton instance; static { instance = new Singleton(); } private Singleton() {} public static Singleton getInstance() { return instance; } } -
线程不安全懒汉式
class Singleton { private static Singleton singleton; private Singleton() {} public static Singleton getInstance() { if (singleton == null) { singleton = new Singleton(); } } return singleton; } -
线程安全懒汉式
class Singleton { private static Singleton singleton; private Singleton() {} public static synchronized Singleton getInstance() { if (singleton == null) { singleton = new Singleton(); } } return singleton; } -
同步代码块懒汉式
class Singleton { private static Singleton singleton; private Singleton() {} public static Singleton getInstance() { if (singleton == null) { synchronized (Singleton.class) { singleton = new Singleton(); } } } return singleton; } -
DoubleCheck
class Singleton { private static volatile Singleton singleton; private Singleton(){} public static Singleton getInstance() { if (singleton == null) { synchronized (Singleton.class) { if (singleton == null) { singleton = new Singleton(); } } } } return singleton; } -
静态内部类 (类加载时候不会加载静态内部类)
class Singleton { private Singleton(){} private static class SingletonInstance { private static final Singleton INSTANCE = new Singleton(); } public static Singleton getInstance() { return SingleInstance.INSTANCE; } } -
枚举方式
enum Singleton { INSTANCE; public void method(){ // 方法 } }
浙公网安备 33010602011771号