在 Android 中创建单例模式有多种方式,下面是一些常见的实现方式:
1. 饿汉式单例模式:
```java
public class MySingleton {
private static final MySingleton INSTANCE = new MySingleton();
private MySingleton() {
// 私有构造方法,防止外部实例化
}
public static MySingleton getInstance() {
return INSTANCE;
}
// 其他方法
}
```
这种方式在类加载时就创建了单例对象,线程安全,但可能会浪费资源。
2. 懒汉式单例模式:
```java
public class MySingleton {
private static MySingleton INSTANCE;
private MySingleton() {
// 私有构造方法,防止外部实例化
}
public static synchronized MySingleton getInstance() {
if (INSTANCE == null) {
INSTANCE = new MySingleton();
}
return INSTANCE;
}
// 其他方法
}
```
这种方式在第一次调用 `getInstance()` 时创建单例对象,线程安全,但同步方法可能会降低性能。
3. 双重检查锁定单例模式:
```java
public class MySingleton {
private static volatile MySingleton INSTANCE;
private MySingleton() {
// 私有构造方法,防止外部实例化
}
public static MySingleton getInstance() {
if (INSTANCE == null) {
synchronized (MySingleton.class) {
if (INSTANCE == null) {
INSTANCE = new MySingleton();
}
}
}
return INSTANCE;
}
// 其他方法
}
```
这种方式利用了双重检查锁定,可以在大多数情况下避免同步,提高了性能。
4. 静态内部类单例模式:
```java
public class MySingleton {
private MySingleton() {
// 私有构造方法,防止外部实例化
}
private static class SingletonHolder {
private static final MySingleton INSTANCE = new MySingleton();
}
public static MySingleton getInstance() {
return SingletonHolder.INSTANCE;
}
// 其他方法
}
```
这种方式利用了 Java 类加载机制,在第一次调用 `getInstance()` 时创建单例对象,线程安全,并且没有同步的开销。
以上是一些常用的 Android 单例模式实现方式,开发者可以根据具体需求选择合适的方式。