单例模式(Singleton Pattern),属于创建型模式。
唯一性: 单例模式确保一个类在应用程序的整个生命周期中只存在一个实例。这意味着无论有多少个地方请求该类的实例,最终只会创建一个对象。
全局访问点: 提供一个全局访问点(通常是一个静态方法或属性),以便从应用程序的任何部分访问这个唯一的实例。这使得可以方便地控制和限制对该实例的访问。
延迟初始化(可选): 单例模式可以支持延迟初始化,即实例的创建可以在第一次被请求时才发生,而不是在类加载时立即创建。这种实现方式被称为“懒汉式”单例。
线程安全性: 在多线程环境中,单例模式的实现需要考虑线程安全问题,确保即使在多个线程同时请求实例的情况下,也只会创建一个实例。
私有构造函数: 单例模式要求类的构造函数是私有的,防止外部代码直接创建新的实例。通常,单例类还会阻止克隆(clone()
)操作和反序列化(readResolve()
),以进一步保证实例的唯一性。
可配置性(有时): 某些单例模式的实现允许配置是否应该创建单例,或者在什么条件下创建单例,比如在分布式系统中可能需要每个节点都有自己的实例。
生命周期管理: 单例模式负责管理自身实例的生命周期,包括创建、销毁和清理资源。
适用场景: 单例模式适用于那些需要在整个应用中频繁访问且每次访问都返回相同状态的对象,例如日志管理器、数据库连接池、线程池、配置管理器等。