1. 懒汉式
public class Singleton {
// 声明单例对象
private static Singleton instance;
// 私有化构造器,不能通过new构造对象
private Singleton() {
}
// 通过静态公有方法获取单例对象
public static synchronized Singleton getInstance() {
// 如果单例对象没有被实例化过,就new一个
if(instance == null) {
instance = new Singleton();
}
return instance;
}
}
懒汉式的单例模式通过私有化构造器的方式禁止调用者通过new关键字获取对象;对象声明为static保证了对象创建后在应用的整个声明周期内不会被系统回收,除非手工置为null,但类中不提供设值方法;通过公有getInstance()方法获取单例对象,方法被synchronized修饰,方法是同步的,保证了并发下只有一个实例。
优点:懒汉式的单例对象只有在第一次getInstance()方法被调用时才会创建。
缺点:无法限制反序列化获取对象的方式,不能绝对保证单例;每次调用getInstance()方法都进行同步,造成了很多不必要的开销。
2. 饿汉式
public class Singleton {
// 声明并创建单例对象
private st