学习总结:
设计模式-- 单例模式(Singleton):
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。使用单例模式可以解决线程不安全的问题:
方式一:
public class Singleton {
private Singleton(){} //注意这是private 只供内部调用,外部无法new出一个对象来
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance() {
return instance;
}
}
方式二:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次调用的时候生成对象。但是由于对整个方法使用了同步锁,在多线程的使用中,会影响效率。
if (instance==null)
instance=new Singleton();
return instance;
}
}
方式三:
public class Singleton {
private static Singleton instance = null;
public static Singleton getInstance() {
//这个方法比方式二又有所改进,不对整个方法使用同步锁,而只对生成对象的模块使用,在效率上有所改进,其余的和方式二完全相同。
if (instance==null){
synchronized(Singleton.class){
if(instance==null){ instance=new Singleton();}
}
}
return instance;
}
}
单例模式使用第一种方式最为简单。