• 内容:保证一个类只有一个实例,并提供一个访问它的全局访问点。
  • 角色:单例(Singleton)
  • 适用场景:
    • 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。
  • 优点:
    • 对唯一实例的受控访问。
    • 单例相当于全局变量,但防止了命名空间被污染。
  • 与单例模式功能相似的概念:全局变量、静态变量(方法) ```python class Singleton(object): “重写new方法” def new(cls, args, *kwargs):

    1. if not hasattr(cls, "_instance"): #保证一个类只有一个对象
    2. cls._instance = super(Singleton, cls).__new__(cls)
    3. return cls._instance

class MyClass(Singleton): “继承Singleton,保证MyClass类只有一个实例” def init(self, name=None): if name is not None: self.name = name

a = MyClass(‘a’)

print(a) print(a.name)

b = MyClass(‘b’) print(b) print(b.name)

print(a.name)

输出

<__main__.MyClass object at 0x0000025AEAB7EF70> a

<__main__.MyClass object at 0x0000025AEAB7EF70> b b ``` 单例模式一般用于数据库的改动、日志文件。