今天在将mybatis封装为一个工具类时,使用单例模式进行封装,而完成单例模式常用的方式有懒汉式,饿汉式。在第一次封装时我使用的是懒汉式的双重判定来做的,后来发现有一种更加简介的方式来实现单例模式,那就是使用枚举类来完成单例模式,下面我们就来看看为什么枚举可以完成单例
枚举类的本质
我们在将一个枚举类的class文件利用javap -v命令进行反编译后可以看到如下内容
在这里我们可以清除的看到枚举其实就是一个继承了Enum的类,而我们在没枚举中所声明的常量,就是一个个对象,这些对象都是静态的,不可修改的,这些不正是单例对象所需要的吗,而且在平时使用懒汉式进行单例时,我们还需要考虑线程安全问题,枚举就不需要,它的线程安全有jvm来管理。
枚举进行单例的代码
只需要将工具类声明为enum,然后给一个常量即可
package com.dyit.bims.util;
import java.io.IOException;
import org.apache