静态内部类单例模式
时间: 2023-08-01 13:13:07 浏览: 98
静态内部类单例模式是一种线程安全的单例模式,它利用了 Java 的语言特性:静态内部类只有在被引用时才会被加载,且类加载是线程安全的,因此可以避免多线程并发访问单例对象时出现的线程安全问题。
下面是一个示例代码:
```java
public class Singleton {
private Singleton() {}
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
```
在这个示例中,私有的构造方法保证了 Singleton 类不能在外部被实例化,getInstance() 方法返回的是静态内部类 SingletonHolder 的 INSTANCE 属性,这个属性在 SingletonHolder 类被加载时就被初始化了,而 SingletonHolder 类的加载是在调用 getInstance() 方法时才会被加载,因此实现了懒加载的效果。
由于静态内部类的加载是线程安全的,因此在多线程并发情况下也能保证单例的唯一性和线程安全性。
相关问题
Kotlin 实现静态内部类单例模式
好的,以下是 Kotlin 实现静态内部类单例模式的示例代码:
```kotlin
class Singleton private constructor() {
companion object {
val instance: Singleton by lazy { SingletonHolder.INSTANCE }
}
private object SingletonHolder {
val INSTANCE = Singleton()
}
}
```
在上面的代码中,我们定义了一个 Singleton 类,并将其构造方法私有化,以确保该类无法被外部实例化。然后,在该类中定义了一个内部类 SingletonHolder,它是一个私有的、静态的、懒加载的单例对象。最后,我们通过 companion object 关键字定义了一个伴生对象 instance,它是 SingletonHolder.INSTANCE 的一个引用,可以让外部代码访问该单例对象。
这种实现方式具有线程安全、懒加载、简单明了等优点,是一种比较常用的单例模式实现方式。
请使用代码实现 Android 中的静态内部类单例模式
好的,以下是使用静态内部类实现的Android中的单例模式代码:
```
public class Singleton {
private Singleton() {}
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
```
这样就可以通过调用`Singleton.getInstance()`来获取唯一的实例对象。
阅读全文