定义
他提供了一个机制:确保一个类只有一个实例对象。
例如日志记录,数据库操作,打印机后台处理程序等。
实现
最简单的实现方法是使构造函数私有化,并创建一个静态方法来完成对象的初始化。然后对象将在第一次调用时创建,之后这个类将返回同一个对象。
注意:
- 类只创建一个对象
- 为对象提供一个访问点,使程序可以全局访问该对象
- 控制共享资源的并行访问
饿汉式单例
当类初始化的时候,就创建这个实例对象,以后永远返回同一个实例对象。
class Singleton1(object):
# 通过覆盖__new__方法来控制对象的创建。
def __new__(cls, *args, **kwargs):
# hasattr用于查看对象cls是否有instance属性,该属性作用是检测该类是否已经生成了一个对象
if not hasattr(cls, 'instance'):
cls