初识设计模式——单例模式(Singleton Pattern)

单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。这意味着无论在应用程序的哪个地方调用该类,都会返回同一个实例对象,而不是创建新的对象。
单例模式的实现步骤
- 私有构造函数:防止类外部使用 new 关键字创建新的实例。
- 私有静态变量:用于存储类的唯一实例。
- 公共静态方法:提供全局访问点,用于获取类的唯一实例。
代码示例
1 |
|
单例模式的优缺点
优点
- 全局访问:提供了一个全局访问点,方便在应用程序的任何地方访问该实例。
- 资源共享:确保一个类只有一个实例,避免了资源的浪费,例如数据库连接、文件操作等。
- 严格控制:可以严格控制对实例的创建和访问,确保数据的一致性和安全性。
缺点
- 违反单一职责原则:单例类既负责自身的实例化,又负责提供业务逻辑,违背了单一职责原则。
- 可测试性降低:由于单例类的全局访问性,在进行单元测试时可能会引入外部依赖,增加了测试的难度。
- 内存泄漏风险:单例对象在整个应用程序的生命周期内都存在,如果不合理使用,可能会导致内存泄漏。
单例模式的适用场景
- 配置管理:在应用程序中,配置信息通常只需要一个实例来管理,例如数据库连接配置、应用程序的全局设置等。
- 日志记录:日志记录器通常是单例的,因为多个日志记录器可能会导致日志文件的混乱和不一致。
- 资源管理:如数据库连接池、线程池等,通过单例模式可以确保资源的有效管理和共享。