两种方式
//饿汉式,一开始就加载
private static UserManager userManager=new UserManager();
private UserManager(){}
public static UserManager getInstance()
{
return userManager;
}
//懒汉式,延迟加载,用到时才加载,节约资源
private static UserManager userManager=null;
private UserManager(){}
/**
synchronized 线程同步
避免发生一下错误:当两个线程同时执行这个方法时,会new出两个对象,加了它就避免了。
*/
public static synchronized UserManager getInstance()
{
if(userManager==null)
{
userManager=new UserManager();
}
return userManager;
}
使用场合
类中没有可以修改的成员变量(这个类没有状态),如果存在可以修改的成员变量会产生线程安全问题,除非加上synchronized 关键字,不建议使用,单例模式无法继承,所以无法扩展,无法更改它的实现。如果读取配置文件比较适合使用单例。