我给面试官讲解了单例模式后,他对我竖起了大拇指!https://blog.csdn.net/weixin_41949328/article/details/107296517?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522FAEE9ABD-432D-416C-98C6-9DD939138DEB%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=FAEE9ABD-432D-416C-98C6-9DD939138DEB&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-107296517-null-null.142^v100^pc_search_result_base4&utm_term=%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F&spm=1018.2226.3001.4187
1.单例模式
1.单:一个
2.例:实例,对象
3.目的:为了让一个类只产生一个对象供外界使用
1.1.饿汉式:
public class Singleton {/*** 为了不让外界随意new对象* 我们需要将构造私有*/private Singleton(){}/*由于是饿汉式,迫不及待的让这个对象new出来,所以我们new对象的时候,将其变成静态的而且,单例模式,自己new出来的对象,不能让外界随意直接调用,所以将对象private*/private static Singleton singleton = new Singleton(); // 在本类中定义一个方法,将内部的对象给外界public static Singleton getSingleton(){return singleton;}
}
1.2.懒汉式:
public class Singleton1 {/*** 为了不让外界随意new对象* 我们需要将构造私有*/private Singleton1() {}/*由于是懒汉式,不着急new对象,啥时候想用,啥时候new而且,单例模式,自己的对象,不能让外界随意直接调用,所以将对象private*/private static Singleton1 singleton = null;/*在本类中定义一个方法,将内部的对象给外界*/public static Singleton1 getSingleton() {/*外层判断,是决定要不要抢锁*/if (singleton==null){synchronized (Singleton1.class){/*内层判断,是决定要不要new对象*/if (singleton == null) {singleton = new Singleton1();}}}return singleton;}
}