Yan-Daojiang's Wiki Help

单例模式

单例模式确保某一个类只有一个实例,并提供一个全局访问点。

单例模式的常见使用场景:

  • 日志记录器:在整个应用程序中,需要维护一个日志记录器来记录重要事件,使用单例模式可以确保所有部分都使用同一个日志记录器实例。

  • 数据库连接:在需要对数据库进行频繁操作的应用中,使用单例模式可以创建一个数据库连接实例,避免重复创建连接,提高性能。

  • 配置信息管理:当应用程序需要访问配置信息(比如全局配置、用户配置等)时,可以使用单例模式确保只有一个全局访问点。

  • 线程池:在多线程环境下,管理共享资源(如线程池)时,单例模式能够确保共享资源的唯一性和可控性。

  • 计数器:在需要跟踪计数器状态或应用程序中有计数需求时,可以使用单例模式管理计数器。

  • 缓存管理:在需要缓存数据以提高性能的场景中,使用单例模式可以管理全局缓存实例。

class Singleton(type): """单例元类.""" def __init__(cls, *args, **kwargs): cls._instance = None super(Singleton, cls).__init__(*args, **kwargs) def __call__(cls, *args, **kwargs): if cls._instance is None: cls._instance = super(Singleton, cls).__call__(*args, **kwargs) return cls._instance class MySingleton(metaclass=Singleton): def __init__(self, value=None): self.value = value def main(): """ >>> obj1 = MySingleton() >>> obj2 = MySingleton() >>> id(obj1) == id(obj2) True >>> obj1.value = 10 >>> obj2.value 10 >>> obj3 = MySingleton(20) >>> obj3.value 10 """ if __name__ == "__main__": import doctest doctest.testmod()
Last modified: 30 August 2024