1、单例模式(Singleton)
- 保证一个类仅有一个实例,并提供一个访问它的全局访问点
- 构造方法私有化
- 声明一个本类的对象
- 给外部提供一个静态方法获取对象实例
- 两种实现方式
- 饿汉式
- 懒汉式
单例模式使用场景:一般作为工具类频繁使用,并且没有属性,主要是方法
2、饿汉式
``` public class Single {
// 私有的构造方法 private Single(){}
// 私有的静态实例 private static Single single = new Single();
// 公开的静态方法,返回静态实例
public static Single getInstance(){
return single;
}
}
<a name="DaRvl"></a>
## 3、懒汉式
public class Single {
// 私有的构造方法
private Single(){}
// 私有的静态实例
private static Single single = null;
// 公开的静态方法,返回静态实例
public static Single getInstance(){
if (single == null) {
single = new Single();
}
return single;
}
}
<a name="tPmGZ"></a>
## 4、单例的线程安全
public class Single {
//构造方法必须私有,外部不可以访问
private Single(){
}
//私有的静态对象属性
private static Single instance;
// 公开 静态 返回当前类 的方法
public static Single getInstance(){
if (instance == null){//多线程调用,10个进入
synchronized (Single.class){//10个排队
if (instance == null){//第一个为null,进入,其他判断不为空
instance = new Single();
}
}
}
return instance;
}
}
<a name="FYdey"></a>
## 5、枚举单例
public enum Single {
INSTANCE;
public static Single getInstance() {
return INSTANCE;
}
} ```