在 Java 中,单例模式是一种常见的设计模式,用于在程序运行期间仅创建一个类实例。这种模式可以确保类的实例在整个程序运行期间只有一个,从而避免了多个实例造成的资源浪费和效率低下。
在 Java 中,单例模式可以通过以下两种方式实现:
懒汉式单例模式是指单例实例在程序运行时被创建,而实例的创建和销毁过程由程序控制。这种模式的实现方式如下:
public class LazySingleton {
private static LazySingleton instance;
private LazySingleton() {} // 构造器私有化
// 通过加锁的方式实现线程安全的延迟加载单例
public static synchronized LazySingleton getInstance() {
if (instance == null) {
instance = new LazySingleton();
}
return instance;
}
}
在以上实现中,如果 instance
为 null
,则 getInstance()
方法会创建一个新的 LazySingleton
实例并将其赋值给 instance
。由于构造器是私有的,所以其他类无法直接创建 LazySingleton
类的实例,只能通过 getInstance()
方法获取。
饿汉式单例模式是指单例实例在程序启动时就被创建,不需要等到被调用。这种模式的实现方式如下:
public class EagerSingleton {
private static final EagerSingleton instance = new EagerSingleton();
private EagerSingleton() {} // 构造器私有化
public static EagerSingleton getInstance() {
return instance;
}
}
在以上实现中,单例实例在程序启动时就被创建,并且实例的创建和销毁过程由程序控制。由于构造器是私有的,所以其他类无法直接创建 EagerSingleton
类的实例,只能通过 getInstance()
方法获取。
无论哪种实现方式,单例模式在 Java 中都是一种常用的设计模式,可以有效地避免资源的浪费和效率低下的问题。在开发过程中,如果需要创建一个在整个程序运行期间只需要一个实例的对象,应该考虑使用单例模式。
领取专属 10元无门槛券
手把手带您无忧上云