欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 面试题:请解释Java中的设计模式,并举例说明单例模式(Singleton Pattern)的实现方式

面试题:请解释Java中的设计模式,并举例说明单例模式(Singleton Pattern)的实现方式

2025/5/14 23:37:42 来源:https://blog.csdn.net/dc_3000/article/details/147892717  浏览:    关键词:面试题:请解释Java中的设计模式,并举例说明单例模式(Singleton Pattern)的实现方式

Java中的设计模式

设计模式是在软件开发过程中针对特定场景而使用的通用解决方案。设计模式可以帮助开发者编写出更加清晰、灵活和可维护的代码。设计模式分为三大类:

  1. 创建型模式:用于对象的创建过程,如单例模式、工厂模式、建造者模式等。
  2. 结构型模式:用于处理类或对象的组合,如适配器模式、桥接模式、装饰器模式等。
  3. 行为型模式:用于处理对象之间的通信,如观察者模式、策略模式、命令模式等。

单例模式(Singleton Pattern)

单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取该实例。

单例模式的实现方式
1. 饿汉式单例模式

饿汉式单例模式在类加载时就创建实例,适用于实例创建开销不大的情况。

public class Singleton {private static final Singleton INSTANCE = new Singleton();private Singleton() {}public static Singleton getInstance() {return INSTANCE;}
}
2. 懒汉式单例模式

懒汉式单例模式在第一次使用时才创建实例,适用于实例创建开销较大的情况。

public class Singleton {private static Singleton INSTANCE;private Singleton() {}public static synchronized Singleton getInstance() {if (INSTANCE == null) {INSTANCE = new Singleton();}return INSTANCE;}
}
3. 双重检查锁定单例模式

双重检查锁定单例模式通过两次检查实例是否为空来确保线程安全,并且只有在实例为空时才进行同步,提高了性能。

public class Singleton {private static volatile Singleton INSTANCE;private Singleton() {}public static Singleton getInstance() {if (INSTANCE == null) {synchronized (Singleton.class)  {if (INSTANCE == null) {INSTANCE = new Singleton();}}}return INSTANCE;}
}
4. 静态内部类单例模式

静态内部类单例模式利用静态内部类的特性,在第一次使用时才加载静态内部类并创建实例,既实现了延迟加载,又保证了线程安全。

public class Singleton {private Singleton() {}private static class SingletonHolder {private static final Singleton INSTANCE = new Singleton();}public static Singleton getInstance() {return SingletonHolder.INSTANCE;}
}
5. 枚举单例模式

枚举单例模式利用枚举的特性,确保实例的唯一性,并且提供了序列化机制,防止反序列化时创建多个实例。

public enum Singleton {INSTANCE;public void doSomething() {System.out.println("Singleton  instance is doing something");}
}

单例模式的使用场景

单例模式适用于以下场景:

  1. 全局配置管理:如数据库连接池、日志记录器等。
  2. 缓存管理:如缓存实例、单例对象等。
  3. 资源管理:如文件操作、线程池等。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词