单例设计模式:保证在内存中只有该类的一个实例化对象。
饿汉模式
/*
* 饿汉模式
*/
class Singleton{
//2.创建成员对象
private static Singleton s = new Singleton();
//1.私有构造方法 --- 只能在该类中创建对象
private Singleton(){};
//3.提供公共访问方式
public static Singleton getSingleton() {
return s;
}
}
懒汉模式
/*
* 懒汉模式(懒加载模式)
*/
class Singleton{
//2.创建成员对象引用
private static Singleton s;
//1.私有构造方法 --- 只能在该类中创建对象
private Singleton() {};
//3.提供公共访问方式
public static Singleton getSingleton() {
if(s == null) {
s = new Singleton();
}
return s;
}
}
饿汉模式和懒汉模式的区别
饿汉模式:
1.消耗内存,时间快
2.在多线程并发时,能确保在内存中只存在一个实例化对象。
懒汉模式:
1.节省内存,时间慢
2.在多线程并发时,不能确保在内存中只有一个实例化对象,在if语句中可能存在多线程问题。