1、什么是单例模式?
在应用程序中,为了保证一个类只能有一个实例。这个类必须自己创建实例,并且还要能向整个系统提供自己创建的这个唯一实例。
2、单例模式的实现思路
实例的创建在类内部完成,对外提供公共的访问方法。
3、单例模式带来的好处
很好地控制了系统中类对应实例的个数,并且节约了系统资源。
4、两种单例模式实现方式
第一种:懒鬼单例
public class Singleton {
private static Singleton instance = null;//懒的体现,类加载时不创建实例,这种方式类加载快,正在访问对象的时候慢
private Singleton() {//构造方法私有化,该类不能被其他对象实例化
}
public static synchronized Singleton getSingleton() {//公共的对外访问方法,增加了同步
if (instance == null) {
return new Singleton();
} else {
return instance;
}
}
}
该种方式的完善写法(解决效率的问题,上面的方式,每次访问获取实例的方法,都需要进行锁的相关判断,对系统开销大开销大,锁的处理应该放在对象上)
class Single{
private static Single s = null;
private Single(){}
public static Single getInstance(){ //锁是谁?字节码文件对象;
if(s == null){
synchronized(Single.class){
if(s == null)
s = new Single();
}
}
return s;
}
}
第二种:饿鬼单例
public class Singleton {
private static final Singleton instance = new Singleton();//饿的体现,类加载的时候创建类的实例,这种方式类加载慢,获取对象的时候快
private Singleton(){//私有构造方法
}
public Singleton getSingleton(){//对外的公共获取对象实例的方法
return instance;
}
}