本文共 1189 字,大约阅读时间需要 3 分钟。
单例模式可以确保在程序运行期间,只有一个对象实例
使用类的时候已经将对象创建完毕,常见的实现办法就是new实例化。从中文语境来说,有着急、急迫的意思,所以也称为饿汉模式
定义方式一:
public class Singleton { private final static Singleton INSTANCE = new Singleton(); private Singleton(){ } public static Singleton getInstance(){ return INSTANCE; }}
定义方式二:
public class Singleton { private static Singleton instance; static { instance = new Singleton(); } private Singleton() { } public static Singleton getInstance() { return instance; }}
在调用get()方法时实例才被创建,常见的实现办法是在get()方法中进行new实例化。从中文语境来说,是缓慢、不急迫的意思,所以也称为懒汉模式
定义方式一(双重检查):
public 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; }}
定义方式二(静态内部类):
public class Singleton { private Singleton() { } private static class SingletonInstance { private static final Singleton INSTANCE = new Singleton(); } public static Singleton getInstance() { return SingletonInstance.INSTANCE; }}
转载地址:http://awpxi.baihongyu.com/