单例设计模式:希望一个类只创建一个对象。
1. 饿汉式:
- 私有化类的构造器。
- 类内部创建类的静态对象
- 创建公共的静态方法,返回类的对象。
public class Singleton {
private Singleton(){
}
private static Singleton s1;
public static Singleton getInstance(){
return s1;
}
}
2. 懒汉式:
- 私有化类的构造器。
- 声明当前类的静态对象,不初始化
- 声明公共的静态方法,返回类的对象。方法中需要判断实例对象是否为null,是null的话需要new一个对象,不是null则直接返回。
public class Singleton{
private Order(){
}
private static Order instance;
public static Order getInstance(){
if (instance==null) {
instance = new Order();
}
return instance;
}
}
3. 两种方式的优缺点:
饿汉式 | 懒汉式 | |
---|---|---|
优点 | 线程安全的 | 延迟对象的创建,减少加载时间 |
缺点 | 对象加载时间长 | 线程不安全的 |
4. 应用场景
<1> 网站的计数器
<2> 应用程序的日志应用
<3> 数据库连接池
<4> 项目中,读取配置文件的类
<5> Application
<6> Windows的任务管理器、回收站