了解23种设计模式-单例模式
原文中文,约1900字,阅读约需5分钟。
📝
内容提要
文章介绍了四种Java单例模式:饿汉式、懒汉式、静态内部类和枚举单例。饿汉式在类加载时实例化,线程安全但资源浪费;懒汉式在使用时实例化,需加锁确保线程安全;静态内部类结合了两者优点,延迟加载且线程安全;枚举单例解决了线程同步和反序列化问题。
🎯
关键要点
-
饿汉式单例在类加载时实例化,线程安全但资源浪费。
-
懒汉式单例在使用时实例化,需要加锁以确保线程安全,写法相对复杂。
-
静态内部类单例结合了饿汉式和懒汉式的优点,支持延迟加载且线程安全。
-
枚举单例解决了线程同步和反序列化问题,无法通过反射获取多个实例。
❓
延伸问答
什么是饿汉式单例模式?
饿汉式单例模式在类加载时实例化,线程安全但可能造成资源浪费。
懒汉式单例模式的优缺点是什么?
懒汉式单例模式在使用时实例化,确保线程安全,但写法相对复杂且性能较低。
静态内部类单例模式有什么优势?
静态内部类单例模式结合了饿汉式和懒汉式的优点,支持延迟加载且线程安全。
枚举单例模式如何解决反序列化问题?
枚举单例模式通过不提供构造方法,防止反射获取多个实例,从而解决反序列化问题。
如何实现线程安全的懒汉式单例模式?
可以通过在获取实例的方法中使用synchronized关键字加锁来实现线程安全。
四种单例模式中哪种最简单?
饿汉式单例模式是四种单例模式中实现最简单的一种。
🏷️