单例模式应该是应用最广的模式,也是最容易理解的模式了.
在许多时候,我们整个系统值需要拥有一个全局对象,这样有利我们的管理和使用.比如网络的访问请求,线程池等.
而写法多种多样,最最简单的写法
public class Singleton {
//私有化构造方法
private Singleton() {}
private static Singleton single=null;
//静态工厂方法
public static Singleton getInstance() {
if (single == null) {
single = new Singleton();
}
return single;
}
}
但是这样写显然不是线程安全的
关于线程安全的写法很多
这里我举例使用静态内部类的单例模式
public class Singleton {
private Singleton() {}
�private static class Holder {
private static final Singleton instance = new Singleton();
}
public static Singleton getInstance() {
return Holder.instance;
}
}
第一次加载Singleton类不会初始化instance,只有在调用getInstance()的时候才会导致instance被初始化.而且通过静态内部类可以保证单例且线程安全