单例模式的写法
单例模式,就是只有一个实例,并且自己负责创建自己的对象,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
首先是一种较为调皮且繁琐的写法:
public class Single {
private static Single instance;
static {
instance = new Single();
}
private Single() {
}
public Single getInstance() {
return instance;
}
}
对该方法优化之后,就是最常见的懒汉式写法:
public class Single {
private static class Holder {
static Single instance = new Single();
}
private Single() {
}
public Single getInstance() {
return Holder.instance;
}
}
实例在用到的时候才去创建。这种写法线程不安全,可以采用synchronized关键字修饰实现线程安全。
对应的饿汉式写法,实例在初始化的时候已经建好,不存在线程安全的问题,但是浪费内存空间。写法如下:
public class Single {
private static Single instance = new Holder();
private Single() {
}
public static Single getInstance() {
return Holder.instance;
}
}