1. 什么是单例模式?
单例模式(Singleton Pattern)是一种设计模式,确保某个类在整个应用中只有一个实例,并且提供全局访问点。它有以下特点:
- 确保只有一个实例。
- 提供全局访问点。
- 防止多次实例化,节约资源。
2. 如何实现单例模式?
单例模式有多种实现方式,以下是最常见的几种。
2.1 饿汉式(Eager Initialization)
饿汉式单例模式在类加载时就创建实例,线程安全,但是如果不使用这个类,实例也会被创建,可能导致内存浪费。
public class Singleton {
// 在类加载时就创建实例,线程安全
private static final Singleton instance = new Singleton();
// 私有构造函数,防止外部实例化
private Singleton() {
}
// 提供全局访问点
public static Singleton getInstance() {
return instance;
}
}
优点:
- 实现简单。
- 线程安全。
缺点:
- 可能会导致内存浪费,尤其是当实例并不一定被使用时。
2.2 懒汉式(Lazy Initialization)
懒汉式单例模式是在首次使用时才创建实例,但在多线程环境下,需要注意线程安全问题。
public class Singleton {
// 延迟加载实例
private static Singleton instance;
// 私有构造函数,防止外部实例化