1. 单例模式的特点:
1. 单例类在系统中仅有一个实例
2. 单例类必须自己创建自己的实例
3. 单例类必须向系统中的其他对象提供这个实例
2. 单例模式的两种模式
public class Test {
public static void main(String[] args) {
Singleton s = Singleton.getInstance();
}
}
2.1 饿汉模式
public class Singleton {
//将构造方法私有化,不允许外部直接创建对象
private Singleton(){
}
//创建类的唯一实例
private static Singleton instance = new Singleton();
//提供一个获取实例的方法
public static Singleton getInstance(){
return instance;
}
}
*只要类加载,实例对象就会被加载
2.2 懒汉模式
public class Singleton {
private Singleton(){
}
private static Singleton instance;
public static Singleton getInstance(){
if(instance==null){
instance = new Singleton();
}
return instance;
}
}
*调用getInstance时实例对象才被加载
3. 两种模式的比较
饿汉模式:加载类慢,获取对象快
懒汉模式:加载类快,获取对象慢