直接上代码
1.懒汉模式 线程不安全
public class SingleTon {
//懒汉模式 线程不安全
private static SingleTon singleTon = null;
private SingleTon(){
}
public static SingleTon getInstance(){
if(singleTon == null){
singleTon = new SingleTon();
}
return singleTon;
}
}
懒汉模式 线程安全
public class SingleTon3 {
//懒汉模式 线程安全
private static SingleTon3 singleTon3 = null;
private SingleTon3(){
}
public synchronized SingleTon3 getInstance(){
if(singleTon3 == null){
singleTon3 = new SingleTon3 ();
}
return singleTon3;
}
}
饿汉模式
public class SingleTon2 {
// 饿汉模式
private SingleTon2 singleTon2 = new SingleTon2();
private SingleTon2(){
}
public SingleTon2 getInstance(){
return singleTon2;
}
}
饿汉模式变种
public class SingleTon4 {
private static SingleTon4 singleTon4 = null;
static {
singleTon4 = new SingleTon4();
}
private SingleTon4(){
}
public static SingleTon4 getInstance(){
return singleTon4;
}
}
静态内部类
public class SingleTon5 {
private static class SingleTon5Instance {
private static final SingleTon5 SINGLE_TON_5 = new SingleTon5();
}
public SingleTon5 getInstance(){
return SingleTon5Instance.SINGLE_TON_5;
}
}
枚举类(Android不提倡使用枚举不止是单例模式)
public enum SingleTon6 {
INSTANCE;
}
双重检验所
public class SingleTon7 {
private static volatile SingleTon7 singleTon7;
private SingleTon7(){
}
public SingleTon7 getSingleTon7(){
if(singleTon7 == null){
synchronized (SingleTon7.class){
if(singleTon7 == null){
singleTon7 = new SingleTon7();
}
}
}
return singleTon7;
}
}
今天学习一下单例模式。做一个笔记