public class SingleInstance1 {
private static final SingleInstance1 ourInstance = new SingleInstance1();
public static SingleInstance1 getInstance() {
return ourInstance;
}
private SingleInstance1() {
}
}
2.2 懒汉式实现
public class SingleInstance2 {
private static volatile SingleInstance2 mInstance;
private SingleInstance2() {
}
public static SingleInstance2 getInstance() {
if (mInstance == null) {
synchronized (SingleInstance2.class) {
if (mInstance == null) {
mInstance = new SingleInstance2();
}
}
}
return mInstance;
}
}
2.3 静态内部类实现
public class SingleInstance3 {
private SingleInstance3() {
}
private static class InnerClass {
static final SingleInstance3 mInstance = new SingleInstance3();
}
public static SingleInstance3 getInstance() {
return InnerClass.mInstance;
}
}
1. 什么是单例模式?有什么作用?
单例模式是指保证整个引用只有一个对象实例。它的作用是保证全局唯一性。
2. 如何实现?
2.1 饿汉式实现
2.2 懒汉式实现
2.3 静态内部类实现
3. JDK或Android的应用举例
在JDK中,NumberFormat#getInstance、Runtime#getRuntime使用的都是单例。在Android SDK中, LayoutInflater#from使用的是单例。
4. 小结
单例模式保证全局只有一个对象实例,避免频繁创建对象使用的开销,可以全局访问,方便调用。