1.定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。(通过静态函数获取实例)
1.单例模式3要素
(1)构造函数私有化
(2)指向自己实例的私有静态应用
(3)以自己实例为返回值的静态的公有的方法。
2.单例的两种模式
(1)饿汉式(就是已经准备好了,只要去拿)
public class Single{
private static Single single=new Single();
private Single(){
}
private Single getSIingleInstance(){
return single;
}
}
(2)懒汉式(要的时候我再创建)
public class Single{
private static Single single;
private Single(){
}
private Single getSIingleInstance(){
if(single=null){
single=new Single();
}
return single;
}
}
3.单例模式的优点
1.在内存中只有一个对象,节省内存空间
2.避免频繁的创建销毁对象,提高性能
3.避免对共享资源的多重占用
4.可以全局访问
4.适用场景
1.需要频繁的实例化然后销毁的对象
2.创建对象耗时过多或者消耗资源过多
4.频繁的访问数据库或文件的对象
5.注意事项
1.只能使用单例类提供的方法得到单例对象,不要使用反射,否则会实例化一个新的对象
2.不要作断开单例对象与类中静态引用用的危险操作
3.多线程使用单例共享资源时,注意线程安全的问题
4.单例类由于构造方法是私有的,所以他们是不可以继承的
5.在java中饿汉式由于懒汉式