业务场景
比如说,你自定义了一个框架,自定义了一份xml格式的一个配置文件,你要读取这个配置文件,这个配置文件中的数据,读取到类中,这个类的实例,只要保存一份就可以。那么此时可以使用单例模式,将这个类做成他的实例只能有一个,在这个实例中保存了配置文件中的数据
但是使用单例模式有一个要求,不允许这个类的逻辑过于复杂,一般就是持有某份配置文件的配置,或者是别的一些数据
所以只能是简单的情况下,用单例模式,就是持有一份数据,但是这份数据全局就只要一份,比如说一些配置数据,就用单例模式,或者是类似redis的客户端实例,或者是类似elasticsearch的客户端实例
/**
* 这个才是我们实际开发过程中,最最常用的单例模式,内部类的方式来实现
*/
public class InnerClassFullSingletonPatternDemo {
/**
* 可以做饱汉模式
*
* 内部类,只要没有被使用,就不会初始化,Singleton的实例就不会创建
*
* 在第一次有人调用getInstance方法的时候,内部类会初始化,创建一个Singleton的实例
*
* 然后java能确保的一点是,类静态初始化的过程一定只会执行一次
*
*/
public static class Singleton {
private Singleton() {
}
public static class InnerHolder {
public static final Singleton instance = new Singleton();
}
public static Singleton getInstance() {
return InnerHolder.instance;
}
}
}