除了静态内部类,还有哪些方式可以实现Java中的单例模式?
时间: 2024-09-21 08:10:31 浏览: 45
Java单例模式实现静态内部类方法示例
除了静态内部类之外,Java中常见的几种实现单例模式的方式还包括:
1. **饿汉式**(Singleton by Lazy Initialization):
- 在类加载时就实例化单例,确保线程安全。
```java
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() { return instance; }
}
```
2. **懒汉式**(Singleton with Double Check Locking):
- 初始时不存在实例,只有当首次请求时才创建,加锁避免并发问题。
```java
public class Singleton {
private volatile static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
```
3. **双重检查锁定优化版**(Singleton with ENUM):
- 使用枚举类作为单例容器,因为它自动是不可变的且线程安全。
```java
public enum Singleton {
INSTANCE;
private Singleton() {}
public static Singleton getInstance() { return INSTANCE; }
}
```
4. **静态工厂方法**(Singleton via Factory Method):
- 创建一个工厂类,负责生成单例实例。
```java
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() { return instance; }
public static class SingletonFactory {
public static Singleton create() { return instance; }
}
}
```
每种方式都有其优缺点,选择哪种取决于具体的项目需求和性能考虑。
阅读全文