设计模式-单例模式概述 | 京东云技术团队
💡
原文中文,约1100字,阅读约需3分钟。
📝
内容提要
介绍单例设计模式的原理和实现方式,包括饿汉式、懒汉式、双重检测、静态内部类和枚举。适用于需要保证实例唯一性和线程安全性的场景,如系统配置信息类。存在OOP特性支持和可测试性问题,可用静态方法、工厂模式和Spring IOC容器替代。
🎯
关键要点
- 设计模式分为创建型、结构型和行为型,创建型模式解决对象创建问题。
- 单例模式只允许创建一个实例对象,构造函数需私有化以避免外部创建实例。
- 实现单例时需考虑线程安全、延迟加载、性能、序列化和反射攻击等问题。
- 饿汉式在类加载期间初始化实例,线程安全但不支持延迟加载。
- 懒汉式支持延迟加载,但可能导致性能瓶颈和低并发。
- 双重检测支持延迟加载和高并发,解决了懒汉式的并发问题。
- 静态内部类实现单例,支持延迟加载和高并发,线程安全性由JVM保证。
- 枚举类型的单例实现简单,保证线程安全和实例唯一性,解决序列化问题。
- 单例适用于系统配置信息类等需要唯一实例的场景,也可解决资源访问冲突。
- 单例模式对OOP特性支持不友好,隐藏类依赖关系,影响代码扩展性和可测试性。
- 替代方案包括静态方法、工厂模式和Spring IOC容器。
➡️