单例模式(Singleton pattern)一个在设计模式中比较简单的模式,我们常说的饿汉式和懒汉式是最常举例的两种写法。
如下
饿汉式:
public class Singleton {
private static final Singleton singleton = new Singleton();
//限制产生多个对象
private Singleton(){}
//获取实例对象
public static Singleton getSingleton(){
return singleton;
}
}
懒汉式:
public class Singleton {
private static Singleton singleton = null;
//限制产生多个对象
private Singleton(){}
//获取实例对象
public static Singleton getSingleton(){
if(singleton == null){
singleton = new Singleton();
}
return singleton;
}
}
区别:懒汉式单例在低并发的情况下应该不会出现问题,但是系统压力增大会有线程安全的问题。通常做法是在getSingleton()加上
synchronized关键字也可以在该方法内增加synchronized来实现。在这里推荐使用第一种单例写法即饿汉式单例,这种写法不考虑线程安全问题,类加载的时候就产生了实例对象,后面用之取之即可。