在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.