Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。我们经常用到单例模式,比如工具类,国际化服务提供类等等
一般Singleton模式通常有几种形式:
第一种形式:定义一个类,它的构造方法为private的,它有一个static的private的该类变量,在类初始化时实例化,通过一个public的getInstance方法回去对它的引用,继而调用其中的方法:
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return instance;
}
}第二种形式:在需要的时候创建对象,注意线程安全
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次
//使用时生成实例,提高了效率!
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}return instance;
}
}
其他形式:定义一个类,它的构造函数为private的,所有方法为static的。
一般认为第一种形式要更加安全些