单例模式

单例模式是一种设计模式,确保一个类只有一个实例,并提供全局访问点。其缺点在于当多个实例需要独立状态时可能导致问题。适用于频繁创建和销毁的场景,如数据库连接,以及资源管理类。创建单例模式通常涉及检查类内部是否已存在实例并根据情况创建或返回。
摘要由CSDN通过智能技术生成

1 什么是单例模式

一个类有且仅有一个实例。

2 缺点

  1. 相互之间数据修改存在交叉时,不适合使用单例模式
  2. 通过任意实例修改属性或其他,那么其他实例也会受到影响
  3. 无论创建多少个实例,最终指向的都是内存中的同一个实例

3 应用场景

  1. 频繁创建,频繁销毁(比如数据库链接、文档链接)
  2. 资源管理类一般设置成单例模式(如电脑的回收站)

4 创建单例模式

  1. 先判断instance中有无保存实例
  2. 如果保存了,就使用保存的实例
  3. 如果没有保存,就创建新的实例
  4. 通过父类的new方法创建新对象
  5. 将创建的新对象进行赋值,传递给instance
  6. 返回赋值的__instance
class Soup(object):

    __instance = None
    def __new__(cls, *args, **kwargs):
        '''
        因为new方法是用来创建新对象的,现在要确保整个类创建出来的是一个实例
        所以要重写__new__方法
        :param args:
        :param kwargs:
        '''

        # 先判断instance中有无保存实例
        # 如果保存了,就使用保存的实例
        # 如果没有保存,就创建新的实例
        if cls.__instance is None:
            # 通过父类的new方法创建新对象
            new_obj =  object.__new__(cls)
            # 将创建的新对象进行赋值,传递给instance
            cls.__instance = new_obj
            #返回赋值的__instance
         return cls.__instance
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值