设计模式之单例@singleton简单理解 python为例

        @singleton的实现原理是,在装饰的类中实现一个__new__方法,在该方法中判断是否已经存在实例,如果存在直接返回,否则创建实例。

        

装饰的类只有一个实例(单例),意思是说,对于一个装饰了@singleton的类,在整个程序运行期间,只会创建一个该类的实例。比如,我们有这样一个类:

@singleton
class Test:
    ...

装饰了@singleton之后,无论我们调用Test()创建实例多少次,返回的 toujours 是一个实例:

t1 = Test()
t2 = Test()
print(t1 is t2) # True

t1和t2指向的都是同一个实例,因为@singleton实现了单例模式,确保Test类只有一个实例。而如果不使用@singleton,每次调用Test()都会返回一个新实例:

class Test:
    ...

t1 = Test()
t2 = Test()
print(t1 is t2) # False

单例模式的目的是确保类只有一个实例,并提供全局访问点。这在一些场景下很有用,比如:- 数据库连接池:确保整个系统只有一个数据库连接实例
- 文件系统:确保文件系统只初始化一次
- 配置文件:确保配置只读取一次所以,@singleton装饰器的作用是实现单例模式,使得装饰的类在程序运行期间只存在一个实例。这样可以简化全局状态的访问,并带来一定的资源利用优化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

୧⍢⃝୨૧(●´৺`●)૭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值