1. 饿汉式
public class Singleton01 {
private Singleton01(){
}
private static Singleton01 singleton01 = new Singleton01();
public static Singleton01 getInstance(){
return singleton01;
}
}
2. 懒汉式
public class Singleton02 {
private Singleton02(){
}
private static Singleton02 singleton02 = null;
public static Singleton02 getInstance(){
if (singleton02 == null){
singleton02 = new Singleton02();
}
return singleton02;
}
}
3. 应用场景
- 网站的计数器,一般也是单例模式实现,否则难以同步。
- 应用程序的日志应用,一般都使用单例模式实现,这一般是由于共享的日志文件一直处于打开状态,因为只能有一个实例去操作,否则内容不好追加。
- 数据库连接池的设计,一般也是采用单例模式,因为数据库连接是一种数据库资源。
- 项目中,读取配置文件的类,一般也只有一个对象。没有必要每次使用配置 文件数据,都生成一个对象去读取。
- Application也是单例的典型应用
- Windows的Task Manager (任务管理器)就是很典型的单例模式
- Windows的RecycleBin (回收站)也是典型的单例应用。在整个系统运行过程 中,回收站一直维护着仅有的一个实例。