推荐使用饿汉式,二者区别在于:从实现方式来讲他们最大的区别就是懒汉式是延时加载,他是在需要的时候才创建对象,而饿汉式在虚拟机启动的时候就会创建。
代码:
public class SingletonDemo {
public static void main(String args[]) {
Singleton1 s1 = Singleton1.getInstance();
s1.print();
Singleton1 ss1 = Singleton1.getInstance();
System.out.println(s1 == ss1);
Singleton2 s2 = Singleton2.getInstance();
s2.print();
}
}
class Singleton1 {
private static Singleton1 s = new Singleton1();
private Singleton1() {}
public static Singleton1 getInstance() {
return s;
}
public void print() {
System.out.println("饿汉式单例设计模式");
}
}
class Singleton2 {
private static Singleton2 s = null;
private Singleton2() {}
public static Singleton2 getInstance() {
if(s == null) {
s = new Singleton2();
}
return s;
}
public void print() {
System.out.println("懒汉式单例设计模式");
}
}运行结果:

本文介绍了单例模式中的饿汉式和懒汉式两种实现方法。饿汉式在类加载时即完成实例化,适合没有懒加载需求的场景;懒汉式则在第一次调用时进行实例化,适用于需要延迟加载的情况。
194

被折叠的 条评论
为什么被折叠?



