单例模式的饿汉式、懒汉式

单例设计模式:保证在内存中只有一个对象

饿汉式:

    /*
     *  饿汉式:
     */
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修饰
区别:
饿汉式:空间换取时间,多线程时:饿汉式不会创建多个对象
懒汉式:时间换取空间,多线程时:懒汉式可能会创建多个对象

猜你喜欢

转载自blog.csdn.net/weixin_42547717/article/details/84001130