单例设计模式分为饿汉式和懒汉式,实际开发中多实用饿汉式,面试有时会涉及懒汉式。
1.创建单例(饿汉式)
//单例设计模式。 饿汉式
// 解决的问题:就是可以保证一个类在内存中的对象唯一性。
//
// 必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。
//
// 如何保证对象唯一性呢?
// 1,不允许其他程序用new创建该类对象。
// 2,在该类创建一个本类实例。
// 3,对外提供一个方法让其他程序可以获取该对象。
//
// 步骤:
// 1,私有化该类构造函数。
// 2,通过new在本类中创建一个本类对象。
// 3,定义一个公有的方法,将创建的对象返回。
public class Single {
private Single(){}
private static Single s = new Single();
public static Single getInstance() {
return s;
}
}
创建单例(懒汉式)
//单例设计模式。 懒汉式 多线程时存在安全问题
//类加载进来,没有对象,只有调用了getInstance方法时,才会创建对象。
//延迟加载形式。
public class Single2 {
private Single2(){}
private static Single2 s = null;
public static Single2 getInstance() {
if (s == null) {
s = new Single2();
}
return s;
}
}
使用单例
public class SingleDemo {
public static void main(String[] args) {
Single s1 = Single.getInstance();
Single s2 = Single.getInstance();
System.out.println(s1 == s2);
Single2 s3 = Single2.getInstance();
Single2 s4 = Single2.getInstance();
System.out.println(s3 == s4);
}
}