一.什么是单例模式
一个类对应一个对象
二.特点
唯一对象在类初始化的时候就new好了
eg:

2.1第一种写法
public class SingleOne {
//在类的内部提前创建好这个类的唯一对象
private static final SingleOne singleOne = new SingleOne();
//其他成员正常定义
// private int a;
//构造器私有化,不允许外部创建对象
private SingleOne(){
;
}
//供外界获取这个类的唯一对象
public static SingleOne getSingleOne(){
return singleOne;
}
//其他成员正常定义
}
import org.junit.jupiter.api.Test;
public class TestSingleOne {
@Test
public void testSingleOne(){
SingleOne singleOne = SingleOne.getSingleOne();
SingleOne singleOne1 = SingleOne.getSingleOne();
System.out.println(singleOne == singleOne1);
}
}
2.2第二种写法
public class SingleOneAnotherWriteModel {
public static final SingleOneAnotherWriteModel singleOneAnotherWriteModel
= new SingleOneAnotherWriteModel();;
//其他成员正常定义
//构造器私有化
private SingleOneAnotherWriteModel(){
;
}
//其他成员正常定义
}
import org.junit.jupiter.api.Test;
public class TestSingleOneAnotherWriteModel {
@Test
public void testSingleOneAnotherWriteModel(){
SingleOneAnotherWriteModel singleOne = SingleOneAnotherWriteModel.singleOneAnotherWriteModel;
SingleOneAnotherWriteModel singleOne1 = SingleOneAnotherWriteModel.singleOneAnotherWriteModel;
System.out.println(singleOne == singleOne1);
}
}
三.特点
饿汉式写法没有线程安全问题