单例模式
①懒汉式 ②饿汉式
③内部类(是一种懒汉式实现方式)
④枚举
前两种方式比较普遍,之前博客也说明过,这里重点看内部类及枚举实现方法
注:前三种方式严格来说并不属于单例模式,因为其在进行反序列化的时又创建了新对象,而枚举不然。
1、内部类实现
package com.brx.single;
public class Single {
static{
System.out.println("single");
}
private Single() {
}
public static Single getInstance(){
return SingleHolder.single;
// 当调用这个方法时,首先会将SingleHolder加载到内存。
// SingleHolder加载到内存的时候会将single对象创建
}
//内部类实现单列模式——懒汉式
private static class SingleHolder{
static{
System.out.println("singleholder");
}
private static Single single=new Single();
}
}
2、枚举
package com.brx.single;
public enum Single1 {
SINGLE;
public void show(){
System.out.println("show");
}
}
测试类
package com.brx.single;
public class Test {
public static void main(String[] args) throws ClassNotFoundException {
// 将Single类加载到内存
Class.forName(Single.class.getName()); //single
Single.getInstance(); //single singleholder
Single1.SINGLE.show();
}
}