单例模式Java实现
主要有三种方式实现,饿汉,懒汉,枚举单例
一、饿汉
// 饿汉单例(最常用,缺点是,会在初始化)
public class Singleton {
private static final Singleton INSTANCE = new Singleton();
private Singleton() {};
public static Singleton getInstance() { return INSTANCE;}
public void m(){}
}
二、懒汉
//懒汉单例(缺点,使用synchronized,效率会降低)
public class Singleton {
private static Singleton INSTANCE;
private Singleton() {}
public static synchronized Singleton getInstance() {
if(INSTANCE == null){
INSTANCE = new Singleton();
}
return INSTANCE;
}
public void m(){}
}
三、枚举
// 枚举单例,既可以解决线程同步,还可以防止反序列化,完美,但用来比较别扭。。。
public enmu Signlen {
INSTANCE;
public void m(){}
public static void main(String[] args){
Signlen.INSTANCE.hashCode();
}
}