刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!
面试题
写出三种单例模式实现 。
使用微信搜索喵呜刷题,轻松应对面试!
答案:
解答思路:
单例模式是一种常用的软件设计模式,它用于限制某个类只能创建一个实例,并提供一个全局访问点。以下是三种常见的单例模式实现方法。
最优回答:
- 懒汉式单例模式(Lazy Initialization):
- 在类初始化时不创建实例,而是在第一次调用 getInstance() 方法时才创建实例。
- 使用双重检查锁定(double-checked locking)机制确保线程安全。示例代码如下:
public class Singleton {
private static volatile Singleton instance; // 使用volatile关键字防止JVM指令重排导致的多线程问题
private Singleton() {} // 私有构造函数,防止外部创建对象
public static Singleton getInstance() {
if (instance == null) { // 第一次检查实例是否存在
synchronized (Singleton.class) { // 加锁,防止多线程同时创建实例
if (instance == null) { // 第二次检查实例是否存在,如果为null则创建实例
instance = new Singleton();
}
}
}
return instance;
}
}
- 饿汉式单例模式(Eager Initialization):
- 在类加载时就创建实例,因此不存在线程安全问题。示例代码如下:
public class Singleton {
private static final Singleton instance = new Singleton(); // 类加载时就创建实例
private Singleton() {} // 私有构造函数,防止外部创建对象
public static Singleton getInstance() {
return instance; // 直接返回实例
}
}
- 内部静态类实现单例模式(Inner Class):
- 利用Java的类加载机制,通过内部静态类实现单例模式的懒加载。示例代码如下:
public class Singleton {
private Singleton() {} // 私有构造函数,防止外部创建对象
private static class SingletonHolder { // 内部静态类,用于持有单例实例
private static final Singleton INSTANCE = new Singleton(); // 在静态内部类中初始化实例,实现懒加载
}
public static Singleton getInstance() { // 提供获取单例的方法
return SingletonHolder.INSTANCE; // 返回单例实例
}
}
解析:
创作类型:
原创
本文链接:写出三种单例模式实现 。
版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!



