单例设计模式:保证在内存中只有一个对象
饿汉式:
/*
* 饿汉式:
*/
class MySingleton{
//1. 构造方法私有化,其他类不能访问该构造(创建该对象)
private MySingleton(){};
//2. 创建本类对象,成员变量被私有,对外提供公共的获取方法
private static MySingleton s=new MySingleton();
//3. 对外提供公共的访问方法
public static MySingleton getInstance(){
return s;
}
}
懒汉式:懒汉式:单例的延迟加载模式(面试会用),但是多线程的时候会有安全隐患
/*
* 懒汉式:单例的延迟加载模式(面试会用),但是多线程的时候会有安全隐患
*/
class MySingleton{
//1. 构造方法私有化,其他类不能访问该构造(创建该对象)
private MySingleton(){};
//2. 声明一个引用
private static MySingleton s;
//3. 对外提供公共的访问方法
public static MySingleton getInstance(){
if(s == null){
s=new MySingleton();
}
return s;
}
}
public class Singleton {
public static void main(String[] args) {
MySingleton m1=MySingleton.getInstance();
MySingleton m2=MySingleton.getInstance();
System.out.println(m1==m2);
}
}
第三种方式就是用final修饰 区别: 饿汉式:空间换取时间,多线程时:饿汉式不会创建多个对象 懒汉式:时间换取空间,多线程时:懒汉式可能会创建多个对象