在Java中如何写一个正确的单例模式?
什么是单例模式
保证一个类只有一个实例,并且提供一个全局可以访问的入口。
public class ExpensiveResource {
public ExpensiveResource() {
field1 = //查询数据库
field2 = //然后对查到的数据做大量计算
field3 = //加密、压缩等耗时操作
}
}
使用场景
- 无状态的工具类
- 日志工具
- 字符串工具
- …
- 全局信息类
- 全局计数
- 环境变量
- …
常见单例模式写法
- 饿汉式
- 懒汉式
- 静态内部类式
- 双重检查式
- 枚举式
饿汉式
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton(){}
public static Singleton getInstance() {
return singleton;
}
}
Comments:
Email questions, comments, and corrections to hi@smartisan.dev.
Submissions may appear publicly on this website, unless requested otherwise in your email.