懒汉:
//懒汉,顾名思义比较懒,在用的时候才实例化
public class Singleton {
//创建实例,注意,此时没有new
private static volatile Singleton instance = null;
//构造方法私有化,无法在外部获取实例,只能通过下方的公有静态方法
private Singleton() {}
//公有的静态方法,返回实例对象
public static synchronized Singleton getInstance() {
//先看下是否存在实例,有的话就不再new了
if (instance == null) {
//这里才new
instance = new Singleton();
}
return instance;
}
}
饿汉:
//饿汉,顾名思义很饥饿,创建对象的时候就直接new
public class Singleton {
//创建实例的时候就new
private static Singleton instance = new Singleton();
// 私有化构造方法,外部不能new
private Singleton() {}
//公有的静态方法,返回实例对象
public static Singleton getInstance() {
//直接将事先new好的实例返回
return instance;
}
}