java中共包含有23种设计模式,其中单例设计模式是为了解决一个类在内存只存在一个对象的问题,单例设计模式可以保证对象的唯一。
1、为了避免其他的程序过多创建该类对象,需要将该类中的要创建的对象私有化
2、为了让其他程序可以访问到该类的对象,需要在本类中自定义一个对象
3、为了方便其他程序对自定义对象的访问,需要对外提供一个公有的方法,其他类通过这个方法来调用这个对象
单例设计模式有两种情况:
一、先初始化对象(饿汉式)
//饿汉式
public class Single{
private static Single s=new EhsSingle();//私有的静态对象 因为是静态的所以在类一加载时就被创建了
private Single(){}
public static Single getInstance(){//对外提供的公共方法
return s;
}
}
//其他程序通过Single.getInstance(); 就可以获取到对象s
二、对象延迟加载(懒汉式)
注:在涉及多线程时,可能会产生多线程的并发问题,多个同时线程操作一个对象,所以需要解决多线程的同步问题
public class Single {
/*
*单例设计模式
* 懒汉式
*/
private static Single s=null;
private Single(){}
public static Single getInstance(Single s){
//调用方法时再创建对象
if(s==null){
//判断对象是否空 减少进入同步代码的次数 提高效率
synchronized(Single.class){
//synchronized同步给线程加锁
if(s==null){
s=new Single();
}
}
}
return s;
}
}
//其他程序通过Single.getInstance(); 就可以获取到对象s