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;}
} ```
