单例模式:
1.保证系统启动到系统停止,全过程只会产生一个实例。
2.当我们在应用中遇到功能性冲突的时候,需要使用单例模式
如:配置文件:如果不是单例(针对于某一种功能的配置) (两个文件的内容一样了,就有一个浪费了,如果是不一样的,我们就不知道以哪个为准了)
代码:只写一个
package singleton;
//懒汉式(静态内部类)
//这种写法,即解决安全问题,又解决了性能问题
//这个代码,没有浪费一个字
public class Singleton4 {
//1.先声明一个静态内部类
//private 私有的保证别人不能修改
//static 保证全局唯一
private static class LazyHolder{
//final 为了防止内部误操作,代理模式,CGLib的代理模式
private static final Singleton4 INSTANCE=new Singleton4();
}
//2.将默认构造方法私有化
private Singleton4(){}
//相当于有一个默认的public的无参的构造方法,就意味着在代码中随时都可以new出来
//3.同样提供静态方法获取实例
//fianl 确保别人不能覆盖
public static final Singleton4 getInstance(){
//方法中的逻辑,是要在用户调用的时候才开始执行的
//方法中实现逻辑需要分配内存,也是调用时才分配的
return LazyHolder.INSTANCE;
}
}