一、饿汉式
此方式的关键在于instance作为类变量并且直接得到了初始化
public class SingletonObject1 {
private static final SingletonObject1 instance=new SingletonObject1();
public static SingletonObject1 getInstance(){
return instance;
}
}
缺点: 不能懒加载(占用内存)
二、懒汉式
懒汉式就是使用类实例的时候再去创建,避免出现类在初始化的时候提前创建
public class SingletonObject2 {
// 定义实例,但不进行初始化
private static SingletonObject2 intance;
public static SingletonObject2 getInstance(){
if (null==intance){
intance= new SingletonObject2();
}
return SingletonObject2.intance;
}
}
缺点: 懒汉式可以保证实例的懒加载,但是无法保证实例的唯一性。
三、懒汉式+同步方法
在多线程的情况下,多个线程同时访问instance(共享资源)需要保证数据的一致性,增加同步的约束。
public class SingletonObject3 {