Python 面试题
目录

Python 中如何实现单例模式?

· 约 3 分钟读完 · 第 150 / 171 章

推荐答案

在 Python 中,可以通过多种方式实现单例模式。以下是两种常见的实现方式:

1. 使用模块

Python 的模块在程序中只会被导入一次,因此可以利用模块的特性来实现单例模式。

在其他模块中使用时:

2. 使用装饰器

通过装饰器可以确保一个类只有一个实例。

本题详细解读

单例模式的概念

单例模式是一种设计模式,它确保一个类只有一个实例,并提供一个全局访问点。单例模式通常用于管理共享资源,如数据库连接、线程池等。

实现方式分析

  1. 使用模块:

    • Python 的模块在导入时会被缓存,因此模块级别的变量在整个程序中只会被初始化一次。
    • 这种方式简单且线程安全,因为模块导入是线程安全的。
  2. 使用装饰器:

    • 装饰器通过维护一个字典来存储类的实例,确保每次调用 get_instance 时返回同一个实例。
    • 这种方式灵活且易于扩展,但需要手动处理线程安全问题(如果需要)。

选择哪种方式?

  • 如果单例模式的需求简单且不需要频繁修改,使用模块方式更为简洁。
  • 如果需要更复杂的控制或需要在多个地方使用单例模式,装饰器方式更为灵活。

注意事项

  • 在多线程环境下,使用装饰器实现的单例模式可能需要额外的线程同步机制(如锁)来确保线程安全。
  • 单例模式可能会引入全局状态,增加代码的耦合性,因此在使用时应谨慎。