单例设计模式
条件:
- 构造方法私有化
- 声明一个私有的静态的本类的实例对象
- 提供一个公有的静态的获得该实例的方法
常用的两种单例设计模式:懒汉式、饿汉式
懒汉式: 比较懒,第一次调用getInstance()方法才初始化instance实例对象
在多线程的情况下并不能保证单例,这时需要在getInstance()方法上加锁来保证单例
public class LanHan {
private LanHan(){};
private static LanHan instance;
public static LanHan getInstance(){
if (instance == null){
instance = new LanHan();
}
return instance;
}
}
饿汉式: 比较饿,类加载时就在内存中初始化instance实例对象
线程安全,没有加锁有更高的执行效率,但相较于懒汉式,浪费了更多的内存
public class EHan {
private EHan(){}
private static EHan instance = new EHan();
public static EHan getInstance(){
return instance;
}
}
测试:
public class Test {
public static void main(String[] args) {
LanHan lanHanInstance1 = LanHan.getInstance();
LanHan lanHanInstance2 = LanHan.getInstance();
System.out.println(lanHanInstance1 == lanHanInstance2);
EHan eHanInstance1 = EHan.getInstance();
EHan eHanInstance2 = EHan.getInstance();
System.out.println(eHanInstance1 == eHanInstance2);
}
}
>>>>>>
true
true