单例类只能有一个实例,单例类必须自己创建自己的唯一实例,单例类必须给所有其他对象提供这一实例。
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
饿汉式、懒汉式、双重锁
饿汉式:饿汉式在类创建的同时就实例化一个静态对象出来,不管之后会不会使用这个单例,都会占据一定的内存,但是相应的,在第一次调用时速度也会更快,
因为其资源已经初始化完成。
private HttpManager() {
}
public static HttpManager httpManager=new HttpManager();
public static HttpManager getInstance(){
return httpManager;
}
懒汉式懒汉式顾名思义,会延迟加载,在第一次使用该单例的时候才会实例化对象出来,第一次调用时要做初始化,如果要做的工作比较多,性能上回有些延迟,
之后就会和饿汉式一样了。
private HttpManager() {
}
public static HttpManager httpManager=null;
public static HttpManager getInstance(){
if (httpManager==null){
httpManager=new HttpManager();
}
return httpManager;
}
双重锁
private HttpManager() {
}
private static volatile HttpManager httpManager=null;
public static HttpManager getInstance(){
if (httpManager==null){
synchronized (HttpManager.class){
httpManager=new HttpManager();
}
}
return httpManager;
}